如何从Jupyter的foreach打印出来?

时间:2016-05-17 07:49:27

标签: scala apache-spark 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"))

在spark-shell中返回

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

但如果我使用Apache Toree Spark内核在Jupyter中运行它,我就得不到输出。我开始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 个答案:

答案 0 :(得分:1)

一般来说,你不是。即使你不与Jupyter合作,任何在动作或转换中创建的输出都会出现在某个地方,但除非是本地模式,否则它不会成为你的本地shell。

如果要可靠地检查数据的某些部分,您应该将数据提取到驱动程序并在本地检查。

animals.take(3).foreach(println)

另一方面,我会避免打印。与日志记录不同,它不易配置,并且可能成为代码中的严重瓶颈。