Cloudera Manager を使用したクラスター設定で CDH 4.2.1-1.cdh4.2.1.p0.5 を使用しており、Java で Hive API を使用して Hive の例を動作させようとしています。私が使用しているハイブのバージョンは 0.10 (hive-hwi-0.10.0-cdh4.2.1.jar) で、次の URL の指示に従って簡単な例をセットアップしようとしています: https://cwiki.apache.org/confluence /display/Hive/HiveClient
コード (投稿の最後にあるソース コード) を実行すると、次のエラーが発生します。
Exception in thread "main" java.sql.SQLException: org.apache.thrift.TApplicationException: Invalid method name: 'execute'
at org.apache.hadoop.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:191)
at org.apache.hadoop.hive.jdbc.HiveStatement.execute(HiveStatement.java:127)
at org.apache.hadoop.hive.jdbc.HiveConnection.configureConnection(HiveConnection.java:126)
at org.apache.hadoop.hive.jdbc.HiveConnection.<init>(HiveConnection.java:121)
at org.apache.hadoop.hive.jdbc.HiveDriver.connect(HiveDriver.java:104)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
しばらく Google で検索してきましたが、この問題の解決策が見つかりません。誰でも問題の原因を教えてくれますか?
前もって感謝します、
ロビー
エラーの原因となるコード:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.log4j.Logger;
public class HiveJob {
private static Logger mLogger = Logger.getLogger(HiveJob.class);
private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
public static void main(String[] args) throws SQLException {
HiveJob myJob = new HiveJob();
myJob.execute();
}
public void execute() throws SQLException {
mLogger.info("Start HiveJob");
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.exit(1);
}
Connection con = DriverManager.getConnection("jdbc:hive://myHiveServer:9083/default", "", "");
Statement stmt = con.createStatement();
String sql = "SHOW TABLES";
System.out.println("Running: " + sql);
ResultSet res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(res.getString(1));
}
mLogger.info("HiveJob executed!");
}
}