返回信息流求各位大神指点~~具体情况如下描述:
jdbc连接hiveserver2,hive-site.xml中配置
<property>
<name>hive.server2.authentication</name>
<value>nosasl</value>
</property>
Xshell中使用beeline命令:!connect jdbc:hive2://xxxxxx:10002/hive root root是可以成功连接并进行select等操作的,但是jdbc访问会报错。
代码如下:
public class hiveExport {
private static String driverName = "org.apache.hive.jdbc.HiveDriver";
private static String url = "jdbc:hive2://178.16.28.51:10002/default";
private static String user = "root";
private static String password = " root";
private static String sql = "";
private static ResultSet res;
public static void main(String[] args) throws Exception {
Connection conn = null;
Statement stmt = null;
String tableName = "cpu01";
try {
conn = getConn();
stmt = conn.createStatement();
// 执行 select * query 操作
selectData(stmt, tableName);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
conn = null;
}
if (stmt != null) {
stmt.close();
stmt = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
private static Connection getConn() throws ClassNotFoundException, SQLException {
Class.forName(driverName);
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
}
private static void selectData(Statement stmt, String tableName)
throws SQLException {
sql = "select * from cpu01" ;
System.out.println("Running:" + sql);
try{
res = stmt.executeQuery(sql);
}catch(Exception e){
e.printStackTrace();
}
System.out.println("执行 select * query 运行结果:");
while (res.next()) {
//System.out.println(res.getInt(1) + "\t" + res.getString(2));
}
}
}
控制台输出:
log4j:WARN No appenders could be found for logger (org.apache.thrift.transport.TSaslTransport).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Running:select * from cpu01
执行 select * query 运行结果:
java.sql.SQLException: org.apache.thrift.transport.TTransportException: SASL authentication not complete
at org.apache.hive.jdbc.HiveStatement.closeClientOperation(HiveStatement.java:172)
at org.apache.hive.jdbc.HiveStatement.close(HiveStatement.java:191)
at com.sugon.bigdataTest.common.hiveExport.main(hiveExport.java:40)
Caused by: org.apache.thrift.transport.TTransportException: SASL authentication not complete
at org.apache.thrift.transport.TSaslTransport.write(TSaslTransport.java:444)
at org.apache.thrift.transport.TSaslClientTransport.write(TSaslClientTransport.java:37)
at org.apache.thrift.protocol.TBinaryProtocol.writeI32(TBinaryProtocol.java:163)
at org.apache.thrift.protocol.TBinaryProtocol.writeMessageBegin(TBinaryProtocol.java:91)
at org.apache.thrift.TServiceClient.sendBase(TServiceClient.java:62)
at org.apache.hive.service.cli.thrift.TCLIService$Client.send_CloseOperation(TCLIService.java:449)
at org.apache.hive.service.cli.thrift.TCLIService$Client.CloseOperation(TCLIService.java:441)
at org.apache.hive.jdbc.HiveStatement.closeClientOperation(HiveStatement.java:166)
... 2 more
这是一条镜像帖。来源:北邮人论坛 / java / #53511同步于 2016/10/16
Java机器人发帖
jdbc连接hive报错SASL authentication not complete,求各位大
LittleStop
2016/10/16镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。