在弄一个项目,需要采用编成的方式从hive中查询数据,但是没有成功,说Table not found.。但我用hive shell 能够查到数据,而且hive的表是存在hdfs中,之前数据是通过hive shell 从hdfs中导入的。
求各位帮我分析原因并提出解决方案,谢谢!
demo代码如下:
package com.checkking.hive;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
public class HiveJdbcClient {
private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
/**
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.exit(1);
}
Connection con = DriverManager.getConnection("jdbc:hive://", "", "");
Statement stmt = con.createStatement();
// stmt.executeQuery("use default");
ResultSet res = stmt.executeQuery("select count(*) from default.log_hive_table where dt='20130317'");
if (res.next()) {
System.out.println(res.getInt(1));
}
con.close();
}
}
报错:
13/04/03 20:12:14 ERROR metadata.Hive: NoSuchObjectException(message:default.log_hive_table table not found)
at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler$17.run(HiveMetaStore.java:1222)
at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler$17.run(HiveMetaStore.java:1217)
at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.executeWithRetry(HiveMetaStore.java:360)
at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.get_table(HiveMetaStore.java:1217)
at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.getTable(HiveMetaStoreClient.java:734)
at org.apache.hadoop.hive.ql.metadata.Hive.getTable(Hive.java:901)
at org.apache.hadoop.hive.ql.metadata.Hive.getTable(Hive.java:843)
at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.getMetaData(SemanticAnalyzer.java:908)
at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:7275)
at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:243)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:430)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:337)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:889)
at org.apache.hadoop.hive.service.HiveServer$HiveServerHandler.execute(HiveServer.java:191)
at org.apache.hadoop.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:187)
at com.checkking.hive.HiveJdbcClient.main(HiveJdbcClient.java:29)
13/04/03 20:12:14 ERROR parse.SemanticAnalyzer: org.apache.hadoop.hive.ql.parse.SemanticException: Line 1:21 Table not found 'log_hive_table'
at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.getMetaData(SemanticAnalyzer.java:910)
at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:7275)
at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:243)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:430)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:337)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:889)
at org.apache.hadoop.hive.service.HiveServer$HiveServerHandler.execute(HiveServer.java:191)
at org.apache.hadoop.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:187)
at com.checkking.hive.HiveJdbcClient.main(HiveJdbcClient.java:29)
FAILED: Error in semantic analysis: Line 1:21 Table not found 'log_hive_table'
13/04/03 20:12:14 ERROR ql.Driver: FAILED: Error in semantic analysis: Line 1:21 Table not found 'log_hive_table'
org.apache.hadoop.hive.ql.parse.SemanticException: Line 1:21 Table not found 'log_hive_table'
at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.getMetaData(SemanticAnalyzer.java:1080)
at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:7275)
at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:243)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:430)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:337)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:889)
at org.apache.hadoop.hive.service.HiveServer$HiveServerHandler.execute(HiveServer.java:191)
at org.apache.hadoop.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:187)
at com.checkking.hive.HiveJdbcClient.main(HiveJdbcClient.java:29)
Caused by: org.apache.hadoop.hive.ql.parse.SemanticException: Line 1:21 Table not found 'log_hive_table'
at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.getMetaData(SemanticAnalyzer.java:910)
... 8 more