如何使用Hadoop MapReduce索引一个非常大的图形?

时间:2014-05-08 15:49:41

标签: hadoop graph mapreduce apache-pig

我有一个非常大的图形(100亿个链接,1TB),以长文本文件的形式,每行定义图形弧。

参考文件

page1, page2
page3, page10
page5, page 1
.
.
.
pageN, pageM

其中pageN可以是任何网页。

为节省空间,我想将此图表转换为索引版本(包含两个文件)。

索引文件(节点文件):

page1, 1
page2, 2
page3, 3
page4, 4
.
.
.
pageN, N

和弧文件(链接):

1, 2
3, 10
5, 1
.
.
.
N, M

是否有任何MapReduce(Hadoop,Pig等)算法可以有效地进行此转换?

1 个答案:

答案 0 :(得分:1)

使用Pig这很容易。首先,您需要获取图表中所有唯一页面的列表。如果一列中的页面不会出现在另一列中,您应该可以使用DISTINCTUNION来获取此内容。接下来,您可以使用RANK函数为每个页面分配唯一ID。将其保存为您的第一个文件。

然后,您可以使用JOIN将这些ID引入图表边缘列表。将其保存为第二个文件。

如果您在执行任何步骤时遇到任何问题,请随时发布有关该步骤的特定问题,我们可以为您提供帮助。