Hive 上的分层查询

Posted

技术标签:

【中文标题】Hive 上的分层查询【英文标题】:Hierarchical queries on Hive 【发布时间】:2015-11-04 23:54:15 【问题描述】:

我在 pyspark 中有一个数据框,其中包含如下数据

node 1: 
node 3:  1
node 5:  1
node 2:  3
node 4:  2

现在我需要知道节点 4 的所有父节点,这样我才能得到类似

的输出
1,3,2

这是否可以使用 Hive SQL 查询?

【问题讨论】:

4 是它自己的父节点? 4 不是其自身的父级。 4 有父节点 2,2 有父节点 3,3 有父节点 1,1 是根节点 "我需要知道节点 4 的所有 parents" => 输出:1,2,3,4 暗示 4 是 4 的父节点. ok.. 1,3,2就够了 【参考方案1】:

SQL 本身不支持迭代,也不支持递归...

使用 CONNECT BY 子句,您可以让数据库处理递归,并假装它很简单 >> 在 Hive 中不可用 使用过程语言包装器(例如 T-SQL、PL/SQL、PgSQL),您可以进行迭代,直到每个叶子都连接到根(...冗长的代码,没有乐趣测试...)>> 不可用在 Hive 中也是如此,除非您使用 Python 来管理迭代并在每次迭代上运行 INSERT 查询,然后收集结果

【讨论】:

以上是关于Hive 上的分层查询的主要内容,如果未能解决你的问题,请参考以下文章

数据仓库之数仓分层及hive分层

Hive - 分层组的多个(平均)计数不同

说一说数据仓库分层模型

如何在 Hive 中为批处理数据创建分层分区

[hive]数仓分层|用户纬度拉链表|维度建模

数据仓库分层模型数据仓库系列07