多个连接的 HiveQL 查询

Posted

技术标签:

【中文标题】多个连接的 HiveQL 查询【英文标题】:HiveQL query for multiple joins 【发布时间】:2014-04-18 00:02:13 【问题描述】:

我是 HIVE 的新手。我正在尝试为连接实现一个简单的 HiveQL 查询。但由于缺乏对 HiveQL 的了解,而且互联网上与 HiveQl 相关的可用资源出奇地少,我只能构建一个在常规 SQL 中只需要几秒钟的简单查询。

场景:

我有 4 张桌子。每个表中都有“playerid”列。我只想将所有表连接在一起并打印出下面在 SQL 中提到的结果。 例如:-

select A.column1 ,B.column2,C.column3,D.column4 
from 
Table1 A,Table2 B,Table3 C,Table4 D
where
A.playerid = B.playerid
and
A.playerid = C.playerid
and
A.playerid = D.playerid

我想要在 HiveQL 中进行类似的查询。我知道如何在 HiveQL 中使用 JOIN ON 语句连接两个表,但连接多个表具有挑战性。

【问题讨论】:

【参考方案1】:
SELECT a.column1, b.column2, c.column3, d.column4
  FROM a
  JOIN b ON (a. playerid = b. playerid)
  JOIN c ON (c. playerid = b. playerid)
  JOIN d ON (d. playerid = c. playerid)

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Joins

【讨论】:

【参考方案2】:
    select A.column1,B.column2,C.column3,D.column4 
       from Table1 A 
          join Table2 B on(A.playerid = B.playerid) 
          join Table3 C on (A.playerid = C.playerid) 
          join Table4 D on (A.playerid = D.playerid)

【讨论】:

请添加描述来解释答案。

以上是关于多个连接的 HiveQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

HiveQL SELECT语句查询

在scala代码中运行多个hiveQL语句[重复]

HiveQL - 大数据的高效 geoip 发现

HiveQL实现累积求和

具有多个连接的巨大查询与多个单个查询

在 SQL/HiveQL 中删除具有旧 id 的重复记录