Spark 2.0 与 Play! 2.5
Spark 2.0 with Play! 2.5
我正在尝试将 Spark 2.0 与 Play 一起使用! 2.5,但我无法使其正常工作(Github 上似乎没有示例)。
我没有任何编译错误,但我有一些奇怪的执行错误。
例如:
Dataset
或 Dataframe
上的几乎所有操作都会导致 NullPointerException
:
val ds: Dataset[Event] = df.as[Event]
println(ds.count()) //Works well and prints the good results
ds.collect() // --> NullPointerException
ds.show
也会导致 NullPointerException
.
所以我遗漏了一个大问题,所以我认为它来自不兼容的版本。这是我的 build.sbt
的相关部分:
object Version {
val scala = "2.11.8"
val spark = "2.0.0"
val postgreSQL = "9.4.1211.jre7"
}
object Library {
val sparkSQL = "org.apache.spark" %% "spark-sql" % Version.spark
val sparkMLLib = "org.apache.spark" %% "spark-mllib" % Version.spark
val sparkCore = "org.apache.spark" %% "spark-core" % Version.spark
val postgreSQL = "org.postgresql" % "postgresql" % Version.postgreSQL
}
object Dependencies {
import Library._
val dependencies = Seq(
sparkSQL,
sparkMLLib,
sparkCore,
postgreSQL)
}
lazy val root = (project in file("."))
.settings(scalaVersion := Version.scala)
.enablePlugins(PlayScala)
libraryDependencies ++= Dependencies.dependencies
dependencyOverrides ++= Set(
"com.fasterxml.jackson.core" % "jackson-databind" % "2.7.4",
"com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.7.4"
)
我 运行 使用 spark 2.0.0 和 play 2.5.12 java 遇到了同样的问题。
激活器似乎默认包含 com.fasterxml.jackson-databind 2.7.8,它不适用于 jackson-module-scala。
我清理了我的 sbt 缓存
rm -r ~/.ivy2/cache
我的新 build.sbt,它在编译时产生警告,因为 spark 2.0.0 是用 jackson-module-scala_2.11:2.6.5 编译的,但仍然会产生 2 个接缝以与 jackson 一起工作-模块 scala 2.8.7
scalaVersion := "2.11.8"
libraryDependencies ++= Seq(
"com.fasterxml.jackson.core" % "jackson-core" % "2.8.7",
"com.fasterxml.jackson.core" % "jackson-databind" % "2.8.7",
"com.fasterxml.jackson.core" % "jackson-annotations" % "2.8.7",
"com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.8.7",
"org.apache.spark" % "spark-core_2.11" % "2.0.0",
"org.apache.spark" % "spark-mllib_2.11" % "2.0.0"
)
源自 jackson.databind.JsonMappingException 的 NullpointerException:不兼容的 Jackson 版本:2.x.x
请阅读 https://github.com/FasterXML/jackson-module-scala/issues/233
我正在尝试将 Spark 2.0 与 Play 一起使用! 2.5,但我无法使其正常工作(Github 上似乎没有示例)。
我没有任何编译错误,但我有一些奇怪的执行错误。
例如:
Dataset
或 Dataframe
上的几乎所有操作都会导致 NullPointerException
:
val ds: Dataset[Event] = df.as[Event]
println(ds.count()) //Works well and prints the good results
ds.collect() // --> NullPointerException
ds.show
也会导致 NullPointerException
.
所以我遗漏了一个大问题,所以我认为它来自不兼容的版本。这是我的 build.sbt
的相关部分:
object Version {
val scala = "2.11.8"
val spark = "2.0.0"
val postgreSQL = "9.4.1211.jre7"
}
object Library {
val sparkSQL = "org.apache.spark" %% "spark-sql" % Version.spark
val sparkMLLib = "org.apache.spark" %% "spark-mllib" % Version.spark
val sparkCore = "org.apache.spark" %% "spark-core" % Version.spark
val postgreSQL = "org.postgresql" % "postgresql" % Version.postgreSQL
}
object Dependencies {
import Library._
val dependencies = Seq(
sparkSQL,
sparkMLLib,
sparkCore,
postgreSQL)
}
lazy val root = (project in file("."))
.settings(scalaVersion := Version.scala)
.enablePlugins(PlayScala)
libraryDependencies ++= Dependencies.dependencies
dependencyOverrides ++= Set(
"com.fasterxml.jackson.core" % "jackson-databind" % "2.7.4",
"com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.7.4"
)
我 运行 使用 spark 2.0.0 和 play 2.5.12 java 遇到了同样的问题。 激活器似乎默认包含 com.fasterxml.jackson-databind 2.7.8,它不适用于 jackson-module-scala。
我清理了我的 sbt 缓存
rm -r ~/.ivy2/cache
我的新 build.sbt,它在编译时产生警告,因为 spark 2.0.0 是用 jackson-module-scala_2.11:2.6.5 编译的,但仍然会产生 2 个接缝以与 jackson 一起工作-模块 scala 2.8.7
scalaVersion := "2.11.8"
libraryDependencies ++= Seq(
"com.fasterxml.jackson.core" % "jackson-core" % "2.8.7",
"com.fasterxml.jackson.core" % "jackson-databind" % "2.8.7",
"com.fasterxml.jackson.core" % "jackson-annotations" % "2.8.7",
"com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.8.7",
"org.apache.spark" % "spark-core_2.11" % "2.0.0",
"org.apache.spark" % "spark-mllib_2.11" % "2.0.0"
)
源自 jackson.databind.JsonMappingException 的 NullpointerException:不兼容的 Jackson 版本:2.x.x 请阅读 https://github.com/FasterXML/jackson-module-scala/issues/233