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中的确不会显示,但是再次创建时就会自动扫描到!!!

希望为了水经验,不过脑乱抄稿子、误人子弟的人类少点。。。信息爆炸的年代到处是辣鸡信息。。。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐