如何使用 Hive 在 hortonworks 中从 jdbc 程序创建表?
How to create tables from jdbc program in hortonworks using Hive?
我想使用 JDBC 在 Hive 中创建 table。这是我试过的代码,
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。
请参阅 Using JDBC 上的 Hive wiki 以连接到 Hive。
该错误仅表示您的类路径在类路径上没有 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
。沙盒上的 Hive root/dc123
的用户凭据也不是。
如果您尝试连接到 Hive metastore,我相信它是 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>
我想使用 JDBC 在 Hive 中创建 table。这是我试过的代码,
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。
请参阅 Using JDBC 上的 Hive wiki 以连接到 Hive。
该错误仅表示您的类路径在类路径上没有 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
。沙盒上的 Hive root/dc123
的用户凭据也不是。
如果您尝试连接到 Hive metastore,我相信它是 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>