Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用配置单元从hortonworks中的jdbc程序创建表?_Java_Jdbc_Hive_Ambari_Hortonworks Sandbox - Fatal编程技术网

Java 如何使用配置单元从hortonworks中的jdbc程序创建表?

Java 如何使用配置单元从hortonworks中的jdbc程序创建表?,java,jdbc,hive,ambari,hortonworks-sandbox,Java,Jdbc,Hive,Ambari,Hortonworks Sandbox,我想使用JDBC在配置单元中创建表。这是我试过的代码 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.Dr

我想使用JDBC在配置单元中创建表。这是我试过的代码

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.

请帮助我解决这个问题。

首先,您从一个MySQL连接示例中复制了代码,并试图用HiveQL替换查询,但这不起作用

无论是
com.mysql.jdbc.Driver
还是
jdbc:mysql
都不允许您连接到Hive。 请参见上的配置单元wiki以连接到配置单元


这个错误仅仅意味着类路径上没有MySQL驱动程序。即使您更改了字符串,您也会在配置单元中遇到类似的错误

我强烈建议使用Maven或Gradle加载依赖项

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

org.apache.hive
蜂窝jdbc
1.2.1

另外,
sandbox hdp.hortonworks.com/hive
需要一个端口号,如
sandbox hdp.hortonworks.com:10000/hive
,而且您不需要
?createDatabaseIfNotExist=true/userdb
。沙箱中也没有配置单元
根/dc123
的用户凭据



如果您试图连接到配置单元元存储,我认为它在Hortonworks沙箱中运行PostgreSQL,那么同样,您使用了错误的JDBC驱动程序、连接URL、查询语法和服务器端口信息

更改连接字符串对我很有效

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>

org.apache.hive
蜂窝jdbc
1.2.1
org.apache.hadoop
hadoop通用
2.7.3
org.apache.hadoop
hadoop验证
2.7.3

我认为您必须使用:
私有静态字符串driverName=“org.apache.hadoop.hive.jdbc.HiveDriver”@hisi但我应该添加任何外部jar吗?它仍然显示类未找到异常。您必须在您的代码中将
com.mysql.jdbc.Driver
替换为
org.apache.hadoop.hive.jdbc.HiveDriver
,谢谢@cricket\u 007