【问题标题】:Spark 2.0 with Play! 2.5带有 Play 的 Spark 2.0! 2.5
【发布时间】:2023-03-28 21:25:01
【问题描述】:

我正在尝试将 Spark 2.0 与 Play 一起使用! 2.5但我没能让它正常工作(而且Github上好像没有例子)。

我没有任何编译错误,但我有一些奇怪的执行错误。
例如: 几乎所有对DatasetDataframe 的操作都会导致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"
)

【问题讨论】:

  • 您能否分享更多代码,例如上面的 df 是数据框,如果它在公共 git repo 中,您可以提供它的链接
  • 我的数据框是这样的:spark.sqlContext.read.jdbc(databaseURL, query, connectionProperties) 是一个有效的 SQL 查询。
  • 你在 spark-shell 上试​​用过它在那里工作正常吗?因为我用 shell n 尝试过它的工作原理,请你显示你得到了什么错误。
  • 不,我没有尝试使用 Spark-shell,但我必须直接在应用程序中使用它。我在 Github littel 应用程序中遇到的错误是:尝试将 struct 映射到 Tuple1,但由于字段数不对齐而失败

标签: apache-spark playframework sbt playframework-2.5 apache-spark-2.0


【解决方案1】:

我在使用 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-module-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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多