import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
public class ClouderaImpalaJdbcExample{
public static void main(String[] args){
ClouderaImpalaJdbcExample c = new ClouderaImpalaJdbcExample();
c.executeQuery("select * from bank_data limit 10");
}
/*
*获得一个Impala的JDBC连接
*/
public Connection connect(){
String impalad_host="172.17.199.14"; //impala实例的IP
String impalad_jdbc_port="21050"; //impala 的JDBC端口
String connection_url="jdbc:hive2://"+impalad_host+":"+impalad_jdbc_port+"/;auth=noSasl"; //不带验证的连接
String jdbc_driver_name="org.apache.hive.jdbc.HiveDriver";
Connection con=null;
tyr{
Class.foName(jdbc_driver_name);
con=DriverManager.getConnection(connection_url);
}catch(Exception e){
e.printStackTrace();
}
return con;
}
/*
*执行SQL语句,并打印出查询结果
*/
public void executeQuery(String sql_statement){
ClouderaImpalaJdbcExample c=new ClouderaImpalaJdbcExample();
Connection con=c.connect();
try{
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(sql_statement);
while(rs.next()){
for(int i=1;i<=rs.getMetaData().getColumnCount();i++){ //rs.getMetaData().getColumnCount()获取结果集的列数
System.out.print(rs.getString(i)+"\t\t\t");
}
System.out.println():
}
}catch(Exception e){
e.printStackTrace();
}
}
}
需要导入的jar包:
commons-logging-X.X.X.jar
hadoop-common.jar
hive-common-X.XX.X-cdhX.X.X.jar
hive-jdbc-X.XX.X-cdhX.X.X.jar
hive-metastore-X.XX.X-cdhX.X.X.jar
hive-service-X.XX.X-cdhX.X.X.jar
httpclient-X.X.X.jar
httpcore-X.X.X.jar
libfb303-X.X.X.jar
libthrift-X.X.X.jar
log4j-X.X.XX.jar
slf4j-api-X.X.X.jar
slf4j-logXjXX-X.X.X.jar
com.google.common-guava-18.0 如果谷歌的这个jar包没导入,impala表中有不是String类型的数据时,jdbc连接impala做查询会报java.lang.NoClassDefFoundError:com/google/common/primitives/