用java编写一个hive万能工具类
时间: 2023-08-19 08:05:43 浏览: 63
以下是一个简单的 Java 工具类,可以用于Hive的基本操作:
```java
import java.sql.*;
public class HiveUtil {
private static final String DRIVER_NAME = "org.apache.hive.jdbc.HiveDriver";
private static final String URL = "jdbc:hive2://localhost:10000/default";
private static final String USER = "hiveuser";
private static final String PASSWORD = "hivepassword";
public static Connection getConnection() throws ClassNotFoundException, SQLException {
Class.forName(DRIVER_NAME);
Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
return conn;
}
public static void execute(String sql) throws ClassNotFoundException, SQLException {
Connection conn = null;
Statement stmt = null;
try {
conn = getConnection();
stmt = conn.createStatement();
stmt.execute(sql);
} finally {
close(conn, stmt, null);
}
}
public static ResultSet query(String sql) throws ClassNotFoundException, SQLException {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
return rs;
} catch (SQLException e) {
close(conn, stmt, rs);
throw e;
}
}
public static void close(Connection conn, Statement stmt, ResultSet rs) {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
通过该工具类,您可以执行以下操作:
- 获取Hive连接:getConnection()
- 执行SQL语句:execute(sql)
- 查询SQL语句:query(sql)
示例:
```java
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 获取Hive连接
Connection conn = HiveUtil.getConnection();
// 创建表
String createTableSql = "CREATE TABLE IF NOT EXISTS test_table (id INT, name STRING)";
HiveUtil.execute(createTableSql);
// 插入数据
String insertDataSql = "INSERT INTO TABLE test_table VALUES (1, 'Hello'), (2, 'World')";
HiveUtil.execute(insertDataSql);
// 查询数据
String querySql = "SELECT * FROM test_table";
ResultSet rs = HiveUtil.query(querySql);
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println("id=" + id + ", name=" + name);
}
// 关闭连接
HiveUtil.close(conn, null, rs);
}
```
请注意,此代码仅作为示例。在实际应用中,您需要根据自己的需求进行更改和调整。同时,为了保证安全和性能,请勿直接在代码中硬编码密码。最好将其存储在配置文件或其他安全存储中,并使用相应的方法获取它们。