ich meine Cluster auf diese Weise gestartet haben:Funke: Repartition Strategie nach Textdatei lesen
/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
Das erste, was ich tue, ist eine große Textdatei zu lesen, und es zählen:
val file = sc.textFile("/path/to/file.txt.gz")
println(file.count())
Wenn Dabei sehe ich, dass nur einer meiner Knoten die Datei liest und die Zählung ausführt (weil ich nur eine Aufgabe sehe). Wird das erwartet? Sollte ich meine RDD nachpartitionieren oder wenn ich Map Reduce-Funktionen verwende, wird Spark das für mich tun?
Was sind Ihre "defaultMinPartitions"? Wie das Dokument klar sagt, nimmt textFile eine optionale Anzahl von Partitionen Parameter, die standardmäßig auf diese. –
Meine defaultMinPartitions ist größer als eins. Es scheint, dass ich eine bestimmte Anzahl von Partition nicht erzwingen kann, weil es nur eine Textdatei ist ... läuft .... val file = sc.textFile ("/ path/to/file.txt.gz", 8) println (file.partitions.length) gibt 1 – Stephane
zurück Nun, es muss das Lesen an einem Ort tun, weil das inhärent seriell ist. Aber ich kann nicht sehen, warum es diesen optionalen Parameter hätte, wenn es _something_ nicht tun würde. –