SparkContext不可序列化。它是用于驱动程序,因此有人可以解释以下内容吗?
使用spark-shell,on yarn和Spark版本1.6.0
val rdd = sc.parallelize(Seq(1))
rdd.foreach(x => print(sc))
客户端上没有任何操作(打印执行程序端)
使用spark-shell,本地主服务器和Spark版本1.6.0
val rdd = sc.parallelize(Seq(1))
rdd.foreach(x => print(sc))
在客户端上打印“null”
使用pyspark,本地主服务器和Spark版本1.6.0
rdd = sc.parallelize([1])
def _print(x):
print(x)
rdd.foreach(lambda x: _print(sc))
引发例外
我也尝试了以下内容:
使用spark-shell和Spark版本1.6.0
class Test(val sc:org.apache.spark.SparkContext) extends Serializable{}
val test = new Test(sc)
rdd.foreach(x => print(test))
现在它最终抛出了一个 java.io.NotSerializableException:org.apache.spark.SparkContext
当我只打印sc时,为什么它在Scala中有效?为什么我应该抛出一个NotSerializableException(或者我认为......)时有一个空引用