【问题标题】:Apache Zeppelin not showing Spark outputApache Zeppelin 未显示 Spark 输出
【发布时间】:2016-03-08 06:00:08
【问题描述】:

我正在使用以下数据样本使用 Spark 测试 Zeppelin:

import org.apache.spark.graphx._
import org.apache.spark.rdd.RDD

val vertexArray = Array(
(1L, ("Alice", 28)),
(2L, ("Bob", 27)),
(3L, ("Charlie", 65)),
(4L, ("David", 42)),
(5L, ("Ed", 55)),
(6L, ("Fran", 50))
)
val edgeArray = Array(
Edge(2L, 1L, 7),
Edge(2L, 4L, 2),
Edge(3L, 2L, 4),
Edge(3L, 6L, 3),
Edge(4L, 1L, 1),
Edge(5L, 2L, 2),
Edge(5L, 3L, 8),
Edge(5L, 6L, 3)
)

val vertexRDD: RDD[(Long, (String, Int))] = sc.parallelize(vertexArray)
val edgeRDD: RDD[Edge[Int]] = sc.parallelize(edgeArray)
val graph: Graph[(String, Int), Int] = Graph(vertexRDD, edgeRDD)

我注意到 Zeppelin 并不总是能够显示输出,即使代码在 Spark-Shell 中运行良好。下面是一个例子,知道如何解决这个问题吗?

graph.vertices.filter { case (id, (name, age)) => age > 30 }.foreach {
case (id, (name, age)) => println(s"$name is $age")
}

【问题讨论】:

    标签: apache-spark spark-graphx apache-zeppelin


    【解决方案1】:

    这里真的没有什么可以解决的。这只是一种预期的行为。 foreach 闭包中的代码在工作人员上执行,而不是在运行笔记本的驱动程序上执行。它的输出可以根据你的配置被捕获,但它不是你可以依赖的。

    如果你想从驱动程序输出东西,最好的选择是 collect 或转换 toLocalIterator 并在本地迭代:

    graph.vertices.filter { case (id, (name, age)) => age > 30 }.collect.foreach {
      case (id, (name, age)) => println(s"$name is $age")
    }
    

    【讨论】:

      猜你喜欢
      • 2016-03-21
      • 2016-12-16
      • 2017-03-11
      • 1970-01-01
      • 2017-06-24
      • 2016-03-21
      • 2021-07-02
      • 2017-08-24
      • 2017-08-18
      相关资源
      最近更新 更多