2016-03-02 18 views
9

Znalazłem metodę glom() na RDD. Zgodnie z dokumentacjąCo to jest glom ?. Czym różni się od mapPartitions?

zwróci RDD stworzony przez koalescencyjny wszystkie elementy wewnątrz każdej partycji na tablicę

Czy glom przetasować danych między partycjami czy też tylko zwrócić dane z partycji tablicy? W tym drugim przypadku uważam, że to samo można osiągnąć przy użyciu mapPartitions.

Chciałbym również wiedzieć, czy istnieją przypadki użycia, które korzystają z glom.

+0

@ zero323 wyjaśnione w miły sposób ... chciałem dodać imp. przechylić tj 'glom' jest przydatna, gdy chcemy realizować operacje RDD użyciu biblioteki macierzy, które są zoptymalizowane do działania na macierzach –

Odpowiedz

7

Czy glom przetasować danych między partycjami

Nie, to nie

Jeśli jest to drugi przypadek wierzę, że to samo można osiągnąć stosując mapPartitions

Może:

rdd.mapPartitions(iter => Iterator(_.toArray)) 

ale to samo dotyczy wszelkich non transformacji tasowania jak map, flatMap lub filter.

jeśli istnieją przypadki użycia, które korzystają z globu.

Każda sytuacja, w której trzeba uzyskać dostęp do danych partycji w formularzu, który można przejechać więcej niż jeden raz.

+0

nie możemy przemierzać więcej niż raz z wyjścia mapPartitions lub mapy lub filtrować? – nagendra

+0

Nie dokładnie to, co mam na myśli. Powiedzmy, że masz funkcje '(vs: T) => dla {x <- vs; y <- vs yield (x, y) 'i chcesz go zastosować do kompletnych partycji. Możesz po prostu 'rdd.glom.map (f)' zamiast konwertować Iterator wewnątrz mapPartitions. Ale na ogół nie jest to kluczowa funkcja. – zero323

Powiązane problemy