如何在hortonworks中使用hive从jdbc程序创建表?

p5fdfcr1  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(333)

我想使用jdbc在hive中创建表。这是我试过的密码,

import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;

public class HiveClient {
private static String driverName = "com.mysql.jdbc.Driver";
public static void main(String[] args) {
Connection con=null;
  // Register driver and create driver instance
try {
      Class.forName(driverName);
      // get connection
      con = DriverManager.getConnection("jdbc:mysql://sandbox-hdp.hortonworks.com/hive?createDatabaseIfNotExist=true/userdb", "root", "dc123");

     // create statement
     Statement stmt = con.createStatement();

  // execute statement
  stmt.executeQuery("CREATE TABLE IF NOT EXISTS "
     +" employee ( eid int, name String, "
     +" salary String, destignation String)"
     +" COMMENT ‘Employee details’"
     +" ROW FORMAT DELIMITED"
     +" FIELDS TERMINATED BY ‘\t’"
     +" LINES TERMINATED BY ‘\n’"
     +" STORED AS TEXTFILE;");

  System.out.println(" Table employee created.");
  con.close();
}catch(Exception e){
System.out.println(e);
}

 }
}

此程序显示异常:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver.

请帮我解决这个问题。

68bkxrlz

68bkxrlz1#

更改连接字符串对我有用

Connection con = DriverManager.getConnection( "jdbc:hive2://58.184.82.67:10000/default", "", "");

在pom.xml中添加了3个依赖项,

<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-auth</artifactId>
<version>2.7.3</version>
</dependency>
llycmphe

llycmphe2#

首先,您复制了一个mysql连接示例中的代码,并尝试用hiveql替换查询,但这行不通。
都不是 com.mysql.jdbc.Driver 或者 jdbc:mysql 会让你连接到Hive。有关如何使用jdbc连接到配置单元,请参见配置单元wiki。
这个错误仅仅意味着类路径上没有mysql驱动程序。即使更改了字符串,hive也会出现类似的错误。
我强烈建议使用maven或gradle加载依赖项。

<dependency>
    <groupId>org.apache.hive</groupId>
    <artifactId>hive-jdbc</artifactId>
    <version>1.2.1</version>
</dependency>

另外 sandbox-hdp.hortonworks.com/hive 需要一个端口号,比如 sandbox-hdp.hortonworks.com:10000/hive 而且你不需要 ?createDatabaseIfNotExist=true/userdb . 配置单元的用户凭据也不是 root/dc123 在沙盒上。
如果您试图连接到hive metastore,我相信它在hortonworks沙盒中运行postgresql,那么同样,您使用了错误的jdbc驱动程序、连接url、查询语法和服务器端口信息。

相关问题