FAQ-smartbi连接impala执行DDL语句失败
    更新时间: 2025-10-31 21:16:57
    
    阅读 14
    
FAQ-smartbi连接impala执行DDL语句失败
问题描述/异常栈
在smartbi上执行建表语句报错如下:IllegalStateException: Create execute request failed: Create execute plan failed :
org.apache.impala.common.AnalysisException: Could not resolve table reference:
'g**_bi_mdt.*****' at
org.apache.impala.analysis.Analyzer.resolvePath(Analyzer.java:1361) at
org.apache.impala.analysis.Analyzer.resolvePath(Analyzer.java:1357) at
org.apache.impala.analysis.Analyzer.resolvePath(Analyzer.java:1293) at
org.apache.impala.analysis.Analyzer.resolvePathWithMasking(Analyzer.java:1210) at
org.apache.impala.analysis.Analyzer.resolveTableRef(Analyzer.java:875) at
org.apache.impala.analysis.FromClause.analyze(FromClause.java:87) at
org.apache.impala.analysis.SelectStmt$SelectAnalyzer.analyze(SelectStmt.java:293) at
org.apache.impala.analysis.SelectStmt$SelectAnalyzer.access$100(SelectStmt.java:280) at
org.apache.impala.analysis.SelectStmt.analyze(SelectStmt.java:272) at
org.apache.impala.analysis.CreateTableAsSelectStmt.analyze(CreateTableAsSelectStmt.java:151) at
org.apache.impala.analysis.AnalysisContext.analyze(AnalysisContext.java:530) at
org.apache.impala.analysis.AnalysisContext.analyzeAndAuthorize(AnalysisContext.java:487) at
org.apache.impala.service.Frontend.doCreateExecRequest(Frontend.java:2243) at
org.apache.impala.service.Frontend.getTExecRequest(Frontend.java:2110) at
org.apache.impala.service.Frontend.createExecRequest(Frontend.java:1934) at
org.apache.impala.service.Frontend$4.run(Frontend.java:3187) at
org.apache.impala.service.Frontend$4.run(Frontend.java:3183) at
java.security.AccessController.doPrivileged(Native Method) at
javax.security.auth.Subject.doAs(Subject.java:360) at
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1857) at
org.apache.impala.service.Frontend.createExecRequestWithProxy(Frontend.java:3183) at
org.apache.impala.service.JniFrontend.createExecRequest(JniFrontend.java:256)发现版本
impala 4.1.0-6.7.0-hive-2.1.1排查过程
1、查看smartbi上的DDL语句提交到impala上的执行过程如下:(并发串行的执行以下sql)

2、以上各条sql具体含义:

解决方案
1、采用单点的方式在smartbi上连接impala,eg:将以下高可用的连接方式
jdbc:hive2://zookeeper1:2182,zookeeper2:2182,zookeeper3:2182/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=impala-ha/hiveserver2-default impala; principal=impala/_HOST@BDMS.COM
修改为:
jdbc:impala://主机名:21050/default;AuthMech=1;KrbRealm=BDMS.COM;KrbHostFQDN=主机名;KrbServiceName=impala;OptimizedInsert=0set sync_ddl=true
问题原因
smartbi工具连接impala执行DDL语句时,一条DDL语句底层包含了多条语句并发串行向impala多个会话提交;此时如果impala未开启节点间元数据强一致性的配置情况下,就会造成DDL语句执行完成后,select语句无法查询到最新的元数据信息导致报错。因此有两个解决方案:
1、采用单点的方式来连接impala,就不会产生节点间元数据不一致的情况了(但存在单点风险)
2、开启节点间元数据强一致性的参数(若每次手动set会比较麻烦,如果在页面导入数据的情况下也不支持;若加在服务端的话,对DDL语句的执行延迟会有一定影响)
作者:曹俊
文档反馈
                    
                    
                    
                    
                 扫码
 扫码 复制
 复制 导出
 导出 
                         
                     
     
     
    
以上内容对您是否有帮助?