【问题标题】:sparkSession.sparkContext is null with local spark clustersparkSession.sparkContext 为 null 与本地火花集群
【发布时间】:2017-09-07 05:14:09
【问题描述】:

我已经创建了一个本地 Spark 集群和一个 Spark 会话,如下所示

val sparkConf = new SparkConf(true).setAppName("test").setMaster("local[8]")

val sparkSession = SparkSession.builder().config(sparkConf).getOrCreate()

使用它,我还成功创建了虚拟数据帧以在我的测试 scala 应用程序中使用

val dummy: DataFrame = sparkSession.createDataFrame(Seq(
  ("BABY", "videos", "0.5"),
  ("APPLIANCES AND STORAGE", "audios", "0.6")
).toDF("dept", "type", "weight")

后来我创建了一个对象 Item 并尝试将其写入 Elastic Search,如下所示

val elasticItemRDD = sparkSession.sparkContext.makeRDD(Seq(Item))
    EsSpark.saveToEs(elasticItemRDD, esIndexNType, Map("es.mapping.id" -> "itemid"))

从我的 sparkSession 访问 sparkContext 时,这给了我一个空指针异常。我试过了

sparkSession.createDataset(Seq(Item)).rdd 

这不会给我这个空指针错误,而是给我一些其他的 MatchError。我喜欢让我的 sparkContext.makeRDD 工作,这样我就可以写信给 ElasticSearch。这个 NullPointerException 的原因可能是什么?我错过了什么吗?

scalaVersion := "2.11.8"
val sparkVersion = "2.2.0"
libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % sparkVersion % "provided",
  "org.apache.spark" %% "spark-sql" % sparkVersion % "provided",
  "org.apache.spark" % "spark-hive_2.11" % sparkVersion,
  "org.elasticsearch" % "elasticsearch-spark-20_2.11" % "5.5.1"
)

【问题讨论】:

    标签: scala apache-spark elasticsearch rdd


    【解决方案1】:

    问题是 SparkContext 在我的 map 函数闭包中不可用。它仅适用于驱动程序功能,不适用于工作任务。

    Spark job is failed due to java.io.NotSerializableException: org.apache.spark.SparkContext

    【讨论】:

      猜你喜欢
      • 2016-11-15
      • 2017-05-04
      • 1970-01-01
      • 2020-06-27
      • 2014-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多