Impala:AnalysisException:LEFT OUTER JOIN 需要 ON 或 USING 子句

Posted

技术标签:

【中文标题】Impala:AnalysisException:LEFT OUTER JOIN 需要 ON 或 USING 子句【英文标题】:Impala: AnalysisException: LEFT OUTER JOIN requires an ON or USING clause 【发布时间】:2017-10-13 17:41:02 【问题描述】:

我有一个基于 Parquet 文件的 Impala 表,用于存储视频观看记录。结构是:

VideoSession
    ...
    ...
    accountdata struct <
        ...
        ...
        emailid string
        ...
        ...
    >
    ...
    playbacksegments <
        array <
            struct <
                ...
                ...
                playbackseconds double
                ...
                ...
            >
        >
    >

我想获得每位客户的总播放秒数。我试过了:

select a.accountdata.emailid, sum(b.item.playbackseconds) secs
from VideoSession a left outer join VideoSession.playbacksegments b
group by a.accountdata.emailid;

Impala 还给我:

AnalysisException: LEFT OUTER JOIN 需要 ON 或 USING 子句。

由于这里没有外键/主键关系(应该是建在struct/parent表关系中吧?)我该如何完成这个查询?

【问题讨论】:

【参考方案1】:

当然;我一发布问题就想到了这一点。

事实证明,如果我删除表别名 a 和 b,则查询有效。对任何人来说,这听起来像是 Impala 中的错误吗?

这行得通:

select accountdata.emailid, sum(item.playbackseconds) secs
from MyTable left outer join MyTable.playbacksegments
group by accountdata.emailid;

【讨论】:

以上是关于Impala:AnalysisException:LEFT OUTER JOIN 需要 ON 或 USING 子句的主要内容,如果未能解决你的问题,请参考以下文章

Impala使用SQL即席查询出现AnalysisException: Could not resolve table reference:的解决办法

Impala使用SQL即席查询出现AnalysisException: Could not resolve table reference:的解决办法

在 Impala 中创建外部表 - 错误

如何正确处理 spark.sql.AnalysisException

AnalysisException:无法解析给定的输入列:

SQL 语句中的 Databricks 错误:AnalysisException:无法解析 '``' 给定的输入列: