代码之家  ›  专栏  ›  技术社区  ›  Jorge Cespedes

JDBC4配置单元驱动程序错误:仅支持AEQuery

  •  0
  • Jorge Cespedes  · 技术社区  · 9 年前

    我正在尝试执行一个简单的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();
    

    谢谢

    1 回复  |  直到 9 年前
        1
  •  1
  •   sandeep rawat    9 年前

    问题是您缺少关键字 TABLE 从isert进入命令。

      String sql = "INSERT INTO **TBALE** " + toTable + " SELECT * FROM " + fromTable;