Hadoop 需要在Hive UDF中实现递归逻辑的建议吗

Hadoop 需要在Hive UDF中实现递归逻辑的建议吗,hadoop,hive,bigdata,recursive-query,Hadoop,Hive,Bigdata,Recursive Query,我们有一个蜂巢表,大约有5亿行。这里的每一行代表数据的一个版本,我的任务是创建一个只包含每一行最终版本的表。不幸的是,每个版本的数据只包含一个指向其以前版本的链接。导出行的最终版本的实际计算并不简单,但我相信下面的示例说明了这个问题 例如: id | xreference ---------------- 1 | null -- original version of 1 2 | 1 -- update to id 1 3 | 2

我们有一个蜂巢表,大约有5亿行。这里的每一行代表数据的一个版本,我的任务是创建一个只包含每一行最终版本的表。不幸的是,每个版本的数据只包含一个指向其以前版本的链接。导出行的最终版本的实际计算并不简单,但我相信下面的示例说明了这个问题

例如:

id | xreference
----------------
1  | null         -- original version of 1
2  | 1            -- update to id 1
3  | 2            -- update to id 2-1
4  | null         -- original version of 4
5  | 4            -- update to version 4
6  | null         -- original version of 6
从上表导出行的最终版本时,我希望生成ID为3、5和6的行

我在级联中实现了一个解决方案,虽然这是正确的,但它有一个n^2运行时,需要半天才能完成

我还使用giraffe实现了一个解决方案,该解决方案在小数据集上非常有效,但在大数据集上,我的内存一直不足。通过这个实现,我基本上为每个id创建了一个顶点,并在每个id/xreference对之间创建了一条边

我们现在一直在研究如何整合/简化ETL过程,我被要求提供一个可以作为配置单元UDF运行的实现。我知道Oracle为这类事情提供了函数,但我在Hive函数方面没有找到太多

我在寻找任何关于实现这种递归的建议,特别是在Hive中,但是我想听听任何建议

Hadoop 1.3
Hive 0.11
Cascading 2.2
12 node development cluster
20 node production cluster
id和xreference是您仅有的两列吗?