用cte创建的hadoop视图行为不正常

0kjbasz6  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(300)

这是视图定义(运行良好)。视图(已创建)

CREATE OR REPLACE VIEW my_view 
AS WITH Q1 
AS (SELECT MAX(LOAD_DT) AS LOAD_DT FROM load_table WHERE UCASE(TBL_NM) = 'FACT_TABLE') 
SELECT F.COLUMN1
, F.COLUMN2
FROM   Q1, FACT_TABLE F 
WHERE  Q1.LOAD_DT = F.TRAN_DT
;

但是,运行时

SELECT * from my_view;

获取以下错误消息:失败:semanticexception行n:m在视图my\u view….的定义中找不到表“q1”。。
看来Hive试图把q1(即cte)当作一个物理表。有什么办法解决这个问题吗?
谢谢你,娜塔莉亚

rslzwgfq

rslzwgfq1#

在我们的环境中,我们也遇到过类似的问题。回答你的问题,这是Hive里的虫子。幸运的是,我们有一个解决办法使它工作。如果您使用的是 Impala 和Hive,并且两者都使用相同的元存储。在 Impala 中创建视图,它将在Hive和 Impala 上工作。
原因:配置单元正在将您的数据库名称附加到所创建的cte引用中,这是导致问题的原因。
谢谢,尼奥

相关问题