Próbuję znaleźć algorytm wyszukiwania rozłącznych zestawów (połączonych komponentów/związków-szukania) na dużej ilości danych za pomocą iskry Apache. Problem to ilość danych. Nawet Raw reprezentacja wierzchołka wykresu nie pasuje do ram na pojedynczej maszynie. Krawędzie również nie pasują do barana.Rozłączne zestawy na iskierniku Apache
Dane źródłowe to plik tekstowy krawędzi wykresu na hdfs: "id1 \ t id2".
id występuje jako wartość ciągu, nie int.
rozwiązanie naiwna, że znalazłem to:
- odbioru RDD krawędzi ->
[id1:id2] [id3:id4] [id1:id3]
- grupa krawędzie przez klucz. ->
[id1:[id2;id3]][id3:[id4]]
- dla każdego rekordu ustalone minimalne identyfikator każdej grupie ->
(flatMap) [id1:id1][id2:id1][id3:id1][id3:id3][id4:id3]
- odwrotnej BRD z etapu 3
[id2:id1] -> [id1:id2]
leftOuterJoin
z ZOPS z etapu 3 i 4- powtarzać z etapu 2, podczas gdy wielkość BRD na krok 3 nie zmieni
Ale to prowadzi do przeniesienia dużych ilości danych pomiędzy węzłami (tasowania)
Wszelkie porady?
Myślę, że graphx musiałby Co trzeba wybudowany w (link: http://spark.apache.org/ graphx /) –