有什么想法为什么这行不通吗?
val m = sc.union(sc.parallelize(0 until 10).map(n => sc.parallelize(n until 20))).collect()
我知道还有其他方法可以做到这一点,但我更感兴趣的是为什么它不起作用。
结果:http://pastebin.com/FuiKFMMA
这里的问题是,您尝试从在操作或转换中运行的代码内部调用 SparkContext 上的方法(在本例中,map
调用中的sc.parallelize
调用)。 SparkContext 方法只能从驱动程序调用,不能在可能在 Spark 执行器中运行的代码(例如操作和转换)中调用。
我有一个 Spark 拉取请求,它在这种情况下添加了更好的错误消息:https://github.com/apache/spark/pull/3884。
另请参阅:Scala Spark中的NullPointerException,似乎是由集合类型引起的?