我有一个非常大的图形(1000亿个链接,1TB),以长文本文件的形式,其中每一行定义图形弧。
<<p> 参考文件/strong>page1, page2
page3, page10
page5, page 1
.
.
.
pageN, pageM
其中pageN可以是任何网页。
为了节省空间,我想将此图转换为索引版本(包含两个文件)。
索引文件(节点文件):
page1, 1
page2, 2
page3, 3
page4, 4
.
.
.
pageN, N
和arc文件(链接):
1, 2
3, 10
5, 1
.
.
.
N, M
是否有MapReduce(Hadoop, Pig等)算法来有效地完成这种转换?
对于Pig来说这很容易。首先,您需要获得图表中所有唯一页面的列表。你应该能够得到这个与DISTINCT
和可能UNION
如果有页面在一个列,没有出现在另一个。接下来,您可以使用RANK
函数为每个页面分配一个唯一的ID。保存为第一个文件。
然后,您可以使用JOIN
将这些id带入您的图边列表。保存为第二个文件。
如果您对任何步骤有任何问题,请随时发布有关该步骤的具体问题,我们可以帮助您解决。