java 操作hive和impala
第一是maven加入jdbc库
org.apache.hive
hive-jdbc
1.1.0-cdh5.8.2
org.apache.hadoop
hadoop-common
2.7.3
注意:
hive-jdbc版本最好要跟impala版本对应上,否则会出现一些问题,比如我执行测试过程中碰到程序一直在运行,不出结果
cloudera repository
cloudera
https://repository.cloudera.com/artifactory/cloudera-repos/
测试代码:
package org.apache.zeppelin.impala;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import java.sql.*;
/**
* Created by moonx on 2016/9/29.
*/
public class ImpalaTest {
private static String driverName =
"org.apache.hive.jdbc.HiveDriver";
@Test
public void testHive() throws SQLException,ClassNotFoundException {
Class.forName(driverName);
Connection con = DriverManager.getConnection(
"jdbc:hive2://10.0.71.31:10000", "hive", "");
Statement stmt = con.createStatement();
String sql = "select * from test" ;
ResultSet res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(String.valueOf(res.getString(1)) + "\t"
+ res.getInt(2));
}
}
@Test
public void testImpala() throws SQLException,ClassNotFoundException{
Class.forName(driverName);
Connection con = DriverManager.getConnection(
"jdbc:hive2://10.0.71.31:21050/;auth=noSasl", "hive", "");
Statement stmt = con.createStatement();
String sql = "select * from test" ;
ResultSet res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(String.valueOf(res.getString(1)) + "\t"
+ res.getInt(2));
}
}
}
hive 和impala如何区分:
通过比较我们可以看到代码都是一样的,就是端口号不一样
hive用的10000,impala用的21050
就是这些区别