2

Я пытаюсь использовать Spark 2.0 с Play! 2.5, но мне не удается заставить его работать должным образом (и, похоже, в Github нет примера).Spark 2.0 с Play! 2.5

У меня нет ошибок компиляции, но у меня есть некоторые странные ошибки при исполнении.
Например: Почти все операции на 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" 
) 
+0

вы можете поделиться другим кодом, как в приведенном выше df, является dataframe, и если он находится в публичном git repo, вы можете дать ссылку –

+0

Я получаю свой Dataframe следующим образом: 'spark.sqlContext.read.jdbc (databaseURL, query, connectionProperties) 'были запросом, является допустимым SQL-запросом. – Simon

+0

И git repo: https://github.com/ticketapp/play2.5Spark2.0 – Simon

ответ

2

Я столкнулся с той же проблемой, используя искру 2.0.0 с игрой 2.5.12 Java. Активатор, по-видимому, включает com.fasterxml.jackson-databind 2.7.8 по умолчанию, и он не работает с jackson-module-scala.

Я очистил мой кэш SBT

rm -r ~/.ivy2/cache 

Мой новый build.sbt, что дает Уоринг во время компиляции, так как искра 2.0.0 скомпилирован с Джексоном-модуль-scala_2.11: 2.6.5, но еще искра 2 швов для работы с Джексоном-модуль-Скале 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" 
) 

в NullPointerException производного от jackson.databind.JsonMappingException: Несовместим Джексона Версия: 2.xx пожалуйста, прочитайте https://github.com/FasterXML/jackson-module-scala/issues/233