Impala使用SQL即席查询出现AnalysisException: Could not resolve table reference:的解决办法
Posted 杀智勇双全杀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Impala使用SQL即席查询出现AnalysisException: Could not resolve table reference:的解决办法相关的知识,希望对你有一定的参考价值。
bug现象
之前已经在Kudu中创建了表且导入了数据:
从KuduPlus
中可以看到确实创建成功且有数据。。。
直接:
Cloudera Manager→Hue→Impala中进行即席查询时:
SELECT * FROM tbl_express_bill_summary
AnalysisException: Could not resolve table reference: 'tbl_express_bill_summary'
很头疼啊!!!之前是谁说Kudu和Impala无缝集成来着?出现了Kudu中有表,但是Impala找不到的情况。。。
尝试解决
这3个都试过了,刷新后还是出不来:
网上的资料各种误人子弟!!!只好自己解决。。。
在node2:8051
,没看错,Kudu默认的端口就是和8051,和8051单片机很像?
点这张表对应的链接进入:
在下方找到Impala CREATE TABLE statement,显示这是Impala创建了外部表。
Impala中,外部表相当Hive中外部表,
删除表时,仅仅删除元数据。
没有`EXTERNAL`时是管理表,Impala删除表时会把Kudu表也删除:
CREATE TABLE `my_first_table`
(
id BIGINT,
name STRING,
PRIMARY KEY(id)
)
PARTITION BY HASH PARTITIONS 16
STORED AS KUDU
TBLPROPERTIES (
'kudu.num_tablet_replicas' = '1'
)
拷下Impala CREATE TABLE statement中的SQL语句,返回到Hue→Impala中切换好数据库并执行:
CREATE EXTERNAL TABLE `tbl_express_bill_summary` STORED AS KUDU
TBLPROPERTIES(
'kudu.table_name' = 'tbl_express_bill_summary',
'kudu.master_addresses' = 'node2:7051')
运行后点左侧的刷新:
表出现了!!!试一下:
SELECT * FROM tbl_express_bill_summary
也能展示结果。
总结
出现这种故障是因为没有创建Kudu和Impala的关联关系,Hive中不建立关系也会出现类似的异常。网上教的无脑刷新是错误的做法。
至于为神马某次执行程序结束后生成Kudu表,且并木有创建关联关系,也可以正常在Impala中显示且能成功查询?很简单,之前已经创建过关联关系了,且是外部表,KuduPlus
中删除后Impala中的确不会显示,但是再次创建时就会自动扫描到!!!
希望为了水经验,不过脑乱抄稿子、误人子弟的人类少点。。。信息爆炸的年代到处是辣鸡信息。。。
以上是关于Impala使用SQL即席查询出现AnalysisException: Could not resolve table reference:的解决办法的主要内容,如果未能解决你的问题,请参考以下文章