代码之家  ›  专栏  ›  技术社区  ›  revy

Impala通过jdbc使元数据无效

  •  1
  • revy  · 技术社区  · 8 年前

    有没有办法通过jdbc使Impala上的元数据无效?

    我尝试了以下操作(我使用的是Cloudera\u ImpalaJDBC4\u 2.5.5.1007驱动程序):

                // invalidate metadata and rebuild index on Impala 
                try {
                    Statement stmt = impalaConn.createStatement();
                    try {
                        String query = "INVALIDATE METADATA;";
                        ResultSet resultSet = stmt.executeQuery(query);
                        while (resultSet.next()) {
                            // do something
                        }
                    }                
                    finally {
                        stmt.close();
                    }
                }
                catch(SQLException ex) {
                    while (ex != null)
                    {
                        ex.printStackTrace();
                        ex = ex.getNextException();
                    }
                    System.exit(1);
                }
    

    但我有以下例外:

    java.sql.SQLDataException: [Simba][JDBC](11300) A ResultSet was expected but not generated from query "INVALIDATE METADATA;". Query not executed.
            at com.cloudera.impala.exceptions.ExceptionConverter.toSQLException(ExceptionConverter.java:136)
            at com.cloudera.impala.jdbc.common.SStatement.checkCondition(SStatement.java:2274)
            at com.cloudera.impala.jdbc.common.SStatement.executeNoParams(SStatement.java:2704)
            at com.cloudera.impala.jdbc.common.SStatement.executeQuery(SStatement.java:880)
            at ico.az.deploy.TestSuite.testTeradata(TestSuite.java:103)
            at ico.az.deploy.TestSuite.run(TestSuite.java:310)
            at ico.az.deploy.TestSuite.main(TestSuite.java:345)
    

    有什么想法吗?

    1 回复  |  直到 8 年前
        1
  •  3
  •   Elliott Frisch    8 年前

    对该查询不返回 ResultSet 。使用 Statement.executeUpdate(String) 相反正如JavaDoc所指出的,为强调起见,添加了粗体, 执行给定的SQL语句,该语句可以是INSERT、UPDATE或DELETE语句 或一个不返回任何内容的SQL语句

    stmt.executeUpdate(query);