2016-05-17 8 views
1

LaufWie println von foreach in Jupyter?

val animals = sc.parallelize(List("cat", "dog", "tiger", "lion", "gnu", "crocodile", "ant", "whale", "dolphin", "spider"), 3) 
animals.foreachPartition(x => println(x.mkString(", ") + " are animals")) 

in funken Shell kehrt

lion, gnu, crocodile are animals 
cat, dog, tiger are animals 
ant, whale, dolphin, spider are animals 

aber wenn ich dies in Jupyter mit Apache Toree Spark-Kernel laufen bekomme ich keine Ausgabe. Das Terminal, von dem ich Jupyter Ausgänge

animals: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[27] at parallelize at <console>:20 
16/05/17 09:33:32 [WARN] o.a.t.k.p.v.s.KernelOutputStream - Suppressing empty output: '' 

Wie komme ich Jupyter zur Ausgabe der Tiere als Funken Schale mit foreach gestartet?

Antwort

1

Im Allgemeinen nicht. Auch wenn Sie nicht mit Jupyter arbeiten, wird eine Ausgabe, die in Aktion oder Transformation erstellt wurde, irgendwo erscheinen, aber wenn es sich nicht um einen lokalen Modus handelt, wird es nicht Ihre lokale Shell sein.

Wenn Sie einen Teil der Daten zuverlässig überprüfen möchten, sollten Sie Daten zum Treiber holen und lokal überprüfen.

animals.take(3).foreach(println) 

Auf einer Randnotiz würde ich sowieso vermeiden, zu drucken. Im Gegensatz zur Protokollierung ist es nicht einfach zu konfigurieren und kann zu einem schwerwiegenden Engpass in Ihrem Code werden.