Przy zmniejszaniu liczby partycji można użyć coalesce
, co jest wspaniałe, ponieważ nie powoduje przetasowania i wydaje się działać natychmiast (nie wymaga dodatkowego etapu pracy).Spark: zwiększyć liczbę partycji bez powodowania tasowania?
Chciałbym czasami robić coś odwrotnego, ale repartition
indukuje przetasowanie. Myślę, że kilka miesięcy temu faktycznie działało to przy użyciu CoalescedRDD
z balanceSlack = 1.0
- więc to, co by się stało, to podzieliłoby partycję tak, aby wynikowa lokalizacja partycji, gdzie wszystkie w tym samym węźle (tak małe netto IO).
Ten rodzaj funkcjonalności jest automatyczny w Hadoop, jeden po prostu zmienia rozmiar podzielonego. Wydaje się, że nie działa tak w Spark, chyba że zmniejsza się liczba partycji. Myślę, że rozwiązaniem może być napisanie niestandardowego partycjonera wraz z niestandardowym RDD, gdzie zdefiniujemy getPreferredLocations
... ale myślałem, że jest to takie proste i powszechne, aby zrobić to z pewnością musi być prosty sposób na zrobienie tego?
Co próbowałem:
.set("spark.default.parallelism", partitions)
na moim SparkConf
, a gdy w kontekście czytania parkietu Próbowałem sqlContext.sql("set spark.sql.shuffle.partitions= ...
, który na 1.0.0 powoduje błąd i nie ma naprawdę chcę, chcę partycji liczba do zmiany we wszystkich rodzajach pracy, a nie tylko w tasowaniu.
Przy odrobinie szczęścia znalezienie rozwiązania tego problemu? – nbubis