1 引入jar包
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-metastore</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-service</artifactId>
<version>3.1.0</version>
</dependency>
2 程序连接
先获取与Impala数据库的连接,然后查询此数据库中的所有表,
最后查询表中的数据(Impala 可以不输入用户名和密码)。
程序如果下:
package com.test.impala;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class TestImpala {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
String driver = "org.apache.hive.jdbc.HiveDriver";
String JDBCUrl = "jdbc:hive2***";//Impala数据库Url地址
String username = "";
String password = "";
Connection conn;
Class.forName(driver);
conn = DriverManager.getConnection(JDBCUrl,username,password);
if(conn !=null){
System.out.println("连接成功");
List<String> allTable = getAllTable(conn);
for(String tableName :allTable){
System.out.println("=============================");
executeSql(conn,"select * from "+tableName);
}
}
}
public static void executeSql(Connection conn, String sql) throws ClassNotFoundException, SQLException{
System.out.println("查询语句:"+sql);
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
int columnCount = rs.getMetaData().getColumnCount();
while (rs.next()){
for(int i=1;i<=columnCount;i++){
System.out.print(rs.getString(i)+"\t");
}
System.out.println("");
}
}
public static List<String> getAllTable(Connection conn) throws ClassNotFoundException, SQLException{
List<String> tableNames= new ArrayList<String>();
String sql="show tables";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
int columnCount = rs.getMetaData().getColumnCount();
while (rs.next()){
for(int i=1;i<=columnCount;i++){
tableNames.add(rs.getString(i));
System.out.print(rs.getString(i)+"\t");
}
System.out.println("");
}
return tableNames;
}
}