Dies ist eine konzeptionelle Frage ...
Stellen Sie sich vor Sie haben einen großen Cluster, der aus vielen Arbeitern besteht, sagen wir n
worker, und diese Arbeiter speichern eine Partition von RDD
oder DataFrame
. Stellen Sie sich vor, Sie starten eine map
Aufgabe über diese Daten hinweg dass map
Sie haben eine print
Anweisung, zuerst einmal:
Das sind zu viele Fragen, daher haben sich die Designer / Betreuer von apache-spark
entschieden, jede Unterstützung für print
-Anweisungen innerhalb einer map-reduce
-Operation fallenzulassen (dies beinhaltet accumulators
und sogar broadcast
Variablen).
Dies ist auch sinnvoll, weil Spark für sehr große Datensätze eine Sprache ist, die entworfen ist. Während das Drucken zum Testen und Debuggen nützlich sein kann, möchten Sie nicht jede Zeile eines DataFrames oder RDDs drucken, da sie so konstruiert sind, dass sie Millionen oder Milliarden von Zeilen haben! Warum also mit diesen komplizierten Fragen umgehen, wenn Sie gar nicht erst drucken wollen?
Um dies zu beweisen, können Sie diesen Scala-Code zum Beispiel ausführen:
%Vor%Tags und Links scala apache-spark println accumulator