2015-05-11 11 views
11

Insbesondere dann, wenn ich sage,Gibt es eine „RDD Explain“ in Funken

rdd3 = rdd1.join(rdd2) 

dann, wenn ich rdd3.collect nennen, je nach Partitioner verwendet, entweder Daten zwischen den Knoten Partitionen bewegt wird, oder die Verbindung erfolgt lokal auf jeder Partition (oder, soweit ich weiß, etwas ganz anderes). Dies hängt davon ab, was das RDD-Papier "enge" und "weite" Abhängigkeiten nennt, aber wer weiß, wie gut der Optimierer in der Praxis ist.

Wie auch immer, ich kann aus der Trace-Ausgabe irgendwie herausfinden, was tatsächlich passiert ist, aber es wäre nett, rdd3.explain zu nennen.

Gibt es so etwas?

Antwort

14

Ich denke toDebugString wird Ihre Neugier befriedigen.

scala> val data = sc.parallelize(List((1,2))) 
data: org.apache.spark.rdd.RDD[(Int, Int)] = ParallelCollectionRDD[8] at parallelize at <console>:21 

scala> val joinedData = data join data 
joinedData: org.apache.spark.rdd.RDD[(Int, (Int, Int))] = MapPartitionsRDD[11] at join at <console>:23 

scala> joinedData.toDebugString 
res4: String = 
(8) MapPartitionsRDD[11] at join at <console>:23 [] 
| MapPartitionsRDD[10] at join at <console>:23 [] 
| CoGroupedRDD[9] at join at <console>:23 [] 
+-(8) ParallelCollectionRDD[8] at parallelize at <console>:21 [] 
+-(8) ParallelCollectionRDD[8] at parallelize at <console>:21 [] 

Jede Vertiefung ist eine Bühne, so sollte dies als zwei Stufen ausgeführt werden.

Auch der Optimierer recht ordentlich ist, aber ich würde mit DataFrames vorschlagen, wenn Sie als Optimierer verwenden 1.3+ es noch besser ist, in vielen Fällen :)

+2

eine Sache der Schönheit das ist –

+0

dies nützlich, aber Es ist nicht das Detail, auf das ich gehofft hatte. Insbesondere bei einem Join, bei dem ein Shuffle erforderlich ist oder nicht, geben Sie das gleiche für die Ausgabe von DebugString ab ... obwohl für Dinge wie distinct kann ich den Shuffle-Schritt deutlich sehen. –

+0

Ich denke, ich meine "realisierte, um lokal zu laufen", wie in, keine Daten sollten zwischen Knoten gesendet werden, wenn die Partitionierer zustimmen. –

Verwandte Themen