yal*_*ris 1 scala elasticsearch apache-spark rdd
我已经创建了一个本地 Spark 集群和一个 Spark 会话,如下所示
val sparkConf = new SparkConf(true).setAppName("test").setMaster("local[8]")
val sparkSession = SparkSession.builder().config(sparkConf).getOrCreate()
Run Code Online (Sandbox Code Playgroud)
使用它我还成功创建了虚拟数据帧以在我的测试 scala 应用程序中使用
val dummy: DataFrame = sparkSession.createDataFrame(Seq(
("BABY", "videos", "0.5"),
("APPLIANCES AND STORAGE", "audios", "0.6")
).toDF("dept", "type", "weight")
Run Code Online (Sandbox Code Playgroud)
后来我创建了一个对象 Item,并尝试将其写入 Elastic Search,如下所示
val elasticItemRDD = sparkSession.sparkContext.makeRDD(Seq(Item))
EsSpark.saveToEs(elasticItemRDD, esIndexNType, Map("es.mapping.id" -> "itemid"))
Run Code Online (Sandbox Code Playgroud)
从我的sparkSession访问sparkContext时,这给了我一个空指针异常。我努力了
sparkSession.createDataset(Seq(Item)).rdd
Run Code Online (Sandbox Code Playgroud)
这不会给我这个空指针错误,而是一些其他的 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"
)
Run Code Online (Sandbox Code Playgroud)
问题是 SparkContext 在我的地图函数闭包中不可用。它仅适用于驱动程序功能,不适用于工作人员任务。
Spark 作业因 java.io.NotSerializedException: org.apache.spark.SparkContext 失败
| 归档时间: |
|
| 查看次数: |
3081 次 |
| 最近记录: |