- 首先启动 Hive 的远程服务:hiveserver2 &
- 所需 jar 包的 pom 文件如下:
<dependencies>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>2.3.0</version>
</dependency>
</dependencies>
- 为了避免在程序运行时出现以下错误:
修改 hadoop 配置文件$HADOOP_HOME/etc/hadoop/core-site.xml
加入如下配置项:
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</valule>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</valule>
</property>
- 连接 Hive 的 JDBC 工具类:
package hive;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/*
* 工具类:
* 1、获取链接
* 2、释放资源: Connection Statement ResultSet
*/
public class JDBCUtils {
// Hive的驱动
private static String driver = "org.apache.hive.jdbc.HiveDriver";
// Hive的url地址
private static String url = "jdbc:hive2://192.168.0.1:10000/default";
// 注册数据库的驱动
static {
try {
Class.forName(driver);
} catch (Exception ex) {
throw new ExceptionInInitializerError(ex);
}
}
// 获取数据库Hive的连接
public static Connection getConnection() {
try {
return DriverManager.getConnection(url, "root", "root");
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
// 释放资源
public static void release(Connection conn, Statement st, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (st != null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
- Demo 程序:
package hive;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class HiveDemo {
public static void main(String[] args) {
// 查询员工信息
String sql = "select * from emp";
Connection conn = null;
PreparedStatement pst = null;
ResultSet rs = null;
try {
conn = JDBCUtils.getConnection();
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
while (rs.next()) {
String ename = rs.getString(2);
double sal = rs.getDouble(6);
System.out.println(ename + "\t" + sal);
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
JDBCUtils.release(conn, pst, rs);
}
}
}
- 运行结果: