如何在Hortonworks中通过JDBC程序创建Hive表?
修正JDBC连接Hive创建表的代码
首先,你的代码里有几个关键问题需要调整,我帮你完善成可以正常运行的版本:
问题点说明
- 错误使用了MySQL的JDBC驱动:你写的
com.mysql.jdbc.Driver是MySQL的驱动,Hive对应的驱动应该是org.apache.hive.jdbc.HiveDriver - 连接URL不完整:Hive JDBC的标准格式是
jdbc:hive2://<你的Hive服务器地址>:<端口>/<数据库名>,默认端口通常是10000 - 缺少创建表的核心逻辑,同时资源(Connection、Statement等)没有正确关闭,异常处理也不完整
完整可运行代码
import java.sql.SQLException; import java.sql.Connection; import java.sql.Statement; import java.sql.DriverManager; public class HiveClient { // 替换为Hive的JDBC驱动类 private static String driverName = "org.apache.hive.jdbc.HiveDriver"; // 替换为你的Hive服务器地址、端口和数据库名 private static String hiveUrl = "jdbc:hive2://localhost:10000/default"; // Hive的用户名(如果没有配置权限可以留空或者填hive) private static String userName = "hive"; // Hive的密码(无权限配置则留空) private static String password = ""; public static void main(String[] args) { Connection con = null; Statement stmt = null; try { // 注册Hive JDBC驱动 Class.forName(driverName); // 获取Hive连接 con = DriverManager.getConnection(hiveUrl, userName, password); // 创建Statement对象用于执行SQL stmt = con.createStatement(); // 定义创建表的SQL语句,这里以创建一个简单的用户表为例 String createTableSql = "CREATE TABLE IF NOT EXISTS user_info (" + "id INT," + "name STRING," + "age INT" + ") ROW FORMAT DELIMITED FIELDS TERMINATED BY ','"; // 执行创建表的SQL boolean result = stmt.execute(createTableSql); // execute方法返回false表示执行的是DDL语句,没有结果集 if (!result) { System.out.println("Hive表创建成功!"); } } catch (ClassNotFoundException e) { System.err.println("找不到Hive JDBC驱动,请检查依赖是否正确引入!"); e.printStackTrace(); } catch (SQLException e) { System.err.println("JDBC操作Hive出错!"); e.printStackTrace(); } finally { // 关闭资源,注意顺序:先关Statement再关Connection try { if (stmt != null) { stmt.close(); } if (con != null) { con.close(); } } catch (SQLException e) { e.printStackTrace(); } } } }
额外注意事项
- 确保你的项目中已经引入了Hive JDBC的依赖,比如Maven的话可以添加:
<dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>你的Hive版本号</version> </dependency>
- 确认HiveServer2服务已经启动,并且你的应用可以访问到Hive服务器的10000端口(如果修改过端口要对应调整)
- 如果Hive配置了Kerberos认证,还需要额外添加认证相关的配置代码
内容的提问来源于stack exchange,提问作者Jayz
相关产品推荐
相关产品推荐

