[英]Disjoint sets on apache spark
我試圖找到使用apache spark在大量數據上搜索不相交集(連接組件/ union-find)的算法。 問題是數據量。 甚至圖頂點的Raw表示也不適合單機上的ram。 邊緣也不適合公羊。
源數據是hdfs上圖形邊緣的文本文件:“id1 \\ t id2”。
id作為字符串值存在,而不是int。
我發現天真的解決方案是:
[id1:id2] [id3:id4] [id1:id3]
[id1:[id2;id3]][id3:[id4]]
(flatMap) [id1:id1][id2:id1][id3:id1][id3:id3][id4:id3]
[id2:id1] -> [id1:id2]
leftOuterJoin
of rdds from stage 3 and 4 但這導致節點之間傳輸大量數據(改組)
有什么建議嗎?
如果您正在使用圖表,我建議您查看其中一個庫
它們都提供開箱即用的連接組件算法。
GraphX :
val graph: Graph = ...
val cc = graph.connectedComponents().vertices
GraphFrames :
val graph: GraphFrame = ...
val cc = graph.connectedComponents.run()
cc.select("id", "component").orderBy("component").show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.