2016-05-17 26 views
1

火花殼運行如何從Jupyter的foreach println?

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

返回

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

但如果我跑這Jupyter與Apache Toree星火內核我沒有得到任何輸出。我開始Jupyter輸出的終端

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: '' 

如何讓Jupyter使用foreach輸出動物作爲spark-shell?

回答

1

一般來說,你沒有。即使您不使用Jupyter,在動作或轉換內部創建的任何輸出也會顯示在某處,但除非它是本地模式,否則它不會是您的本地shell。

如果您想要可靠地檢查某些部分數據,您應該將數據提取到驅動程序並在本地進行檢查。

animals.take(3).foreach(println) 

在旁註中我會避免打印。與日誌記錄不同,它不易配置,可能會成爲代碼中的嚴重瓶頸。