Impala 通过 jdbc 使元数据无效

Posted

技术标签:

【中文标题】Impala 通过 jdbc 使元数据无效【英文标题】:Impala invalidate metadata through jdbc 【发布时间】:2018-03-26 15:52:51 【问题描述】:

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

我尝试了以下方法(我正在使用 Cloudera_ImpalaJDBC4_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】:

是的。该查询不返回ResultSet。请改用Statement.executeUpdate(String)。正如 JavaDoc 所指出的,为了强调而添加了粗体,执行给定的 SQL 语句,可能是 INSERT、UPDATE 或 DELETE 语句或不返回任何内容的 SQL 语句

stmt.executeUpdate(query);

【讨论】:

以上是关于Impala 通过 jdbc 使元数据无效的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法使元数据无效并从 CDSW 中的 python 代码重建索引?

Java实现impala操作kudu

如果无效元数据可以做同样的事情,为啥需要在 Impala 中刷新

Impala 中的无效元数据和刷新命令之间的区别?

Cloudera Impala:文件的版本号无效。这可能是由于元数据过时

Impala MetaData问题