我正在尝试执行一个简单的hiveql语句,如下所示:insert into table1 select*from table2。
两个表具有相同的模式,但存储选项不同,即表1存储为avro,表2存储为parquet。
我将jdbc4驱动程序复制到了项目的位置,可以毫无问题地获得到hiveserver2的连接。但是,当我尝试执行上述查询时,出现以下异常。
Only AEQuery is supported.
java.sql.SQLException: Only AEQuery is supported.
at com.cloudera.hive.hive.querytranslation.HiveQueryTranslator.translate(HiveQueryTranslator.java:86)
at com.cloudera.hive.hive.querytranslation.HiveQueryTranslator.translate(HiveQueryTranslator.java:74)
at com.cloudera.hive.hivecommon.dataengine.HiveJDBCDSIExtQueryExecutor.execute(HiveJDBCDSIExtQueryExecutor.java:168)
at com.cloudera.hive.jdbc.common.SStatement.executeNoParams(SStatement.java:2719)
at com.cloudera.hive.jdbc.common.SStatement.execute(SStatement.java:549)
at py.com.personal.hive.HiveDataLoad.insert(HiveDataLoad.java:46)
at InsertTest.testHiveInsert(InsertTest.java:23)
Caused by: com.cloudera.hive.support.exceptions.ErrorException: Only AEQuery is supported.
有人能告诉我我做错了什么或者如何解决这个问题吗?
这是我的代码:
if (this.conn == null) {
this.conn = this.cm.connect();
}
Statement stmt = this.conn.createStatement();
String sql = "INSERT INTO " + toTable + " SELECT * FROM " + fromTable;
stmt.execute(sql);
stmt.close();
谢谢