2014-10-14 23 views
16

Próbuję zrozumieć, jak partycjonowanie odbywa się w Apache Spark. Czy możecie pomóc, proszę?Jak działa partycjonowanie w Sparku?

Oto scenariusz:

  • mistrzem i dwa węzły z 1 rdzenia każdy
  • akta count.txt z 10 MB

Ile partycji wykonuje następujące utworzyć?

rdd = sc.textFile(count.txt) 

Czy rozmiar pliku ma wpływ na liczbę partycji?

+0

Dlaczego opuściłeś odpowiedź bez akceptacji/komentarza? – gsamaras

Odpowiedz

21

Domyślnie partycja jest tworzona dla każdej partycji HDFS, która domyślnie wynosi 64 MB (z Spark Programming Guide).

Możliwe jest przekazanie kolejnego parametru defaultMinPartitions, który zastępuje minimalną liczbę partycji, które stworzy iskra. Jeśli nie zastąpisz tej wartości, iskra stworzy co najmniej tyle partycji, co spark.default.parallelism.

Ponieważ spark.default.parallelism ma być liczbą rdzeni we wszystkich maszynach w twoim klastrze, uważam, że w twoim przypadku powstałyby co najmniej 3 partycje.

Możesz również repartition lub coalesce zmienić RDD, aby zmienić liczbę partycji, która z kolei wpływa na całkowitą ilość dostępnego paralelizmu.

+2

@jacek W przypadku "default.parallelism" (utworzono 3 partycje) i pliku danych o rozmiarze 10 MB (pojedynczy blok w HDFS), ile danych będą zawierały partycje Spark? Czy będzie: ** 1. Podzielone na 3 równe części (po 3,3 MB każda) i wysłane do executorów. ** _2. Nie podzielone (P1 = 10 MB, P2 = P3 = 0 MB) i wykonane w tym samym węźle z powodu lokalizacji danych._ ** 3. Losowe przetasowanie danych we wszystkich 3 partycjach. ** –

+1

@mrmcgrep, Istnieje zamieszanie, w pierwszym stwierdzeniu, które domyślnie powiedziałeś, partycja zostanie utworzona dla każdego bloku HDFS, a następnie w trzecim stwierdzeniu, które powiesz, jeśli nie będziemy przesłonię 'defaultMinPartitions', a następnie utworzy co najmniej tyle partycji, co" spark.default.parallelism ", która ma być liczbą rdzeni w klastrze. Więc utworzy partycję 'partition = HDFS' lub' = liczba rdzeni'? – Explorer

+0

@LiveAndLetLive Uważam, że wszystkie są minimalne. Będziesz miał co najmniej tyle partycji, co najmniejsza z trzech wartości. – mrmcgreg