我有一个非常大的图形(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等)算法可以有效地进行此转换?
答案 0 :(得分:1)
使用Pig这很容易。首先,您需要获取图表中所有唯一页面的列表。如果一列中的页面不会出现在另一列中,您应该可以使用DISTINCT
和UNION
来获取此内容。接下来,您可以使用RANK
函数为每个页面分配唯一ID。将其保存为您的第一个文件。
然后,您可以使用JOIN
将这些ID引入图表边缘列表。将其保存为第二个文件。
如果您在执行任何步骤时遇到任何问题,请随时发布有关该步骤的特定问题,我们可以为您提供帮助。