Wenn die Anzahl der Partitionen verringert werden soll, kann coalesce
verwendet werden, was großartig ist, da es kein Shuffle verursacht und augenblicklich sofort funktioniert (erfordert keine zusätzliche Job-Stufe).Spark: Anzahl der Partitionen erhöhen, ohne einen Shuffle zu verursachen?
Ich möchte manchmal das Gegenteil tun, aber repartition
induziert einen Shuffle. Ich denke, dass ich vor ein paar Monaten funktionierte, indem ich CoalescedRDD
mit balanceSlack = 1.0
verwendete - was passieren würde, wäre es eine Partition teilen würde, so dass die resultierenden Partitionen wo alle auf dem gleichen Knoten (so klein net IO).
Diese Art der Funktionalität ist in Hadoop automatisch, man optimiert nur die Split-Größe. Es scheint in Spark nicht so zu funktionieren, es sei denn, man verringert die Anzahl der Partitionen. Ich denke, die Lösung könnte sein, einen benutzerdefinierten Partitionierer zusammen mit einer benutzerdefinierten RDD zu schreiben, wo wir getPreferredLocations
definieren ... aber ich dachte, das ist so eine einfache und übliche Sache, um sicher zu tun, muss es eine geradlinige Art, es zu tun?
Dinge versucht:
.set("spark.default.parallelism", partitions)
auf meinem SparkConf
, und wenn sie im Kontext des Lesens Parkett habe ich sqlContext.sql("set spark.sql.shuffle.partitions= ...
versucht, die auf 1.0.0 einen Fehler verursacht und nicht wirklich wollen, ich will, ich will Partition Anzahl, die für alle Arten von Jobs geändert werden soll, nicht nur für das Mischen.
Haben Sie Glück, eine Lösung dafür zu finden? – nbubis