【问题标题】:How to println from foreach in Jupyter?如何从 Jupyter 的 foreach 中打印出来?
【发布时间】:2016-05-17 07:49:26
【问题描述】:

跑步

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

但如果我在 Jupyter 中使用 Apache Toree Spark 内核运行它,我将不会得到任何输出。我启动 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 输出?

【问题讨论】:

    标签: scala apache-spark jupyter


    【解决方案1】:

    一般来说,你不会。即使您不使用 Jupyter,在动作或转换中创建的任何输出也会出现在某处,但除非它是本地模式,否则它不会是您的本地 shell。

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

    animals.take(3).foreach(println)
    

    顺便说一句,我无论如何都会避免打印。与日志记录不同,它不容易配置,并且可能成为代码中的严重瓶颈。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-20
      • 1970-01-01
      • 1970-01-01
      • 2021-03-06
      • 2021-12-11
      相关资源
      最近更新 更多