Mam uruchomiła moją klaster ten sposób:Spark: strategia Repartition po przeczytaniu pliku tekstowego
/usr/lib/spark/bin/spark-submit --class MyClass --master yarn-cluster--num-executors 3 --driver-memory 10g --executor-memory 10g --executor-cores 4 /path/to/jar.jar
Pierwszą rzeczą, którą robię jest odczytywany duży plik tekstowy, a liczyć go:
val file = sc.textFile("/path/to/file.txt.gz")
println(file.count())
Kiedy robiąc to widzę, że tylko jeden z moich węzłów faktycznie czyta plik i wykonuje liczenie (ponieważ widzę tylko jedno zadanie). Czy to jest oczekiwane? Czy powinienem ponownie rozdzielić mój RDD lub kiedy używam funkcji zmniejszania mapy, czy Spark zrobi to za mnie?
Jakie są twoje "defaultMinPartitions"? Jak wyraźnie wskazuje dokument, textFile przyjmuje opcjonalną liczbę parametrów partycji, która domyślnie jest równa. –
Moje defaultMinPartitions jest większe niż jeden. Wygląda na to, że nie mogę wymusić określonej liczby partycji, ponieważ jest to tylko jeden plik tekstowy ... działa .... val file = sc.textFile ("/ path/to/file.txt.gz", 8) println (file.partitions.length) zwraca 1 – Stephane
Cóż, to musi zrobić czytanie w jednym miejscu, ponieważ jest to z natury szeregowe. Ale nie rozumiem, dlaczego miałby ten opcjonalny parametr, gdyby coś takiego nie zrobiło. –