连接Hive需要使用JDBC驱动程序,在IDEA中连接Hive需要三个步骤:导入Hive的JDBC驱动、添加JDBC驱动、编写Java代码连接Hive。
下面是详细的步骤:
导入Hive的JDBC驱动
一般情况下,JDBC驱动程序都是以jar包的形式提供的。Hive的JDBC驱动程序也不例外,你可以在https://cwiki.apache.org/confluence/display/Hive/HiveJDBCInterface下载到。
将下载好的jar包添加到项目的类路径中。具体操作步骤如下:
- 在项目结构中(Ctrl+Shift+Alt+S),选择Modules选项卡,选择要导入JDBC驱动的模块(一般是app或者main)。
- 在Dependencies中,点击"+"按钮,选择"Jars or directories"。
- 选择对应的jar包即可完成导入操作。
添加JDBC驱动
在导入Hive的JDBC驱动程序后,还需要将Hive的JDBC驱动程序注册到JDBC DriverManager中。
Class.forName("org.apache.hive.jdbc.HiveDriver");
编写Java代码连接Hive
在Java代码中创建Hive连接并执行SQL语句。连接Hive的代码如下,注意hive.jdbc.url地址与hive.server2.authentication属性值的替换。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class HiveJdbcClient {
// 初始化数据库信息
static String driverName = "org.apache.hive.jdbc.HiveDriver";
static String url = "jdbc:hive2://localhost:10000/default;auth=noSasl";
static String user = "root";
static String password = "root";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 加载Hive Driver类
Class.forName(driverName);
// 创建连接
conn = DriverManager.getConnection(url, user, password);
stmt = conn.createStatement();
// 执行查询
String sql = "select * from students";
rs = stmt.executeQuery(sql);
// 输出查询结果
while (rs.next()) {
System.out.println(rs.getString("name") + "\t" + rs.getInt("age") + "\t" + rs.getString("address"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 关闭连接和查询资源
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
备注:代码中的“students”是我本地Hive的数据表的名称,示例中只是演示SQL查询操作,其他的Hive SQL操作可以参考Hive的SQL语法手册。
另外,通过添加配置项可以使Hive支持远程连接,例如:url = "jdbc:hive2://远程ip:10000/default;auth=noSasl"
,其中远程ip为Hive服务器的IP地址。
示例一:
我们新建一个空白的maven项目,按照上述步骤操作,编写Java代码执行Hive SQL语句,在查询第一条插入的数据,SQL如下:
select * from students limit 1;
输出的结果如下:
张三 20 北京
示例二:
我们新建一个空白的Spring Boot项目,按照上述步骤操作,编写Java代码执行Hive SQL语句,在查询年龄大于25岁的学生,SQL如下:
select * from students where age > 25;
输出结果如下:
王五 30 上海
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:idea中如何连接hive - Python技术站