有谁知道如何在Hadoop中的两个数据集之间实现Natural-Join操作?在Mapreduce/Hadoop中加入两个数据集
更具体地讲,这里就是我究竟需要做的:
我有两组数据:被存储为(tile_number,point_id:point_info)
点的信息,这是1:n键值对。这意味着对于每个tile_number,可能有几个point_id:point_info
行信息存储为(tile_number,line_id:line_info),这又是1:m键值对,并且对于每个tile_number,可能有不止一个line_id:line_info
正如你所看到的,tile_numbers在两个数据集之间是相同的。现在我真正需要的是基于每个tile_number来加入这两个数据集。换句话说,对于每个tile_number,我们有n个point_id:point_info和m个line_id:line_info。我想要做的是加入point_id的所有对:point_info所有对line_id的:line_info为每tile_number
为了澄清,这里有一个例子:
对于点对:
(tile0, point0)
(tile0, point1)
(tile1, point1)
(tile1, point2)
对线对:
(tile0, line0)
(tile0, line1)
(tile1, line2)
(tile1, line3)
我要的是如下:
瓦片0:
(tile0, point0:line0)
(tile0, point0:line1)
(tile0, point1:line0)
(tile0, point1:line1)
瓦片1:
(tile1, point1:line2)
(tile1, point1:line3)
(tile1, point2:line2)
(tile1, point2:line3)
很大。但我应该如何在减少部分进行交叉产品? – reza 2012-08-03 21:55:42
我编辑了我的答案! – Razvan 2012-08-03 22:01:48
太棒了,但这只适用于如果您可以将所有点/线条放入内存以便将它们存储在两个提及的列表中。我恐怕在我的大型数据集中并不是这样的情况:( – reza 2012-08-03 22:10:04