Scala/Spark: NoClassDefFoundError: net/liftweb/json/Formats



我正在尝试从Scala对象创建一个JSON字符串,如这里所述。

我有以下代码:

import scala.collection.mutable._
import net.liftweb.json._
import net.liftweb.json.Serialization.write
case class Person(name: String, address: Address)
case class Address(city: String, state: String)
object LiftJsonTest extends App {
  val p = Person("Alvin Alexander", Address("Talkeetna", "AK"))
  // create a JSON string from the Person, then print it
  implicit val formats = DefaultFormats
  val jsonString = write(p)
  println(jsonString)
}

我的构建。SBT文件包含以下内容:

libraryDependencies += "net.liftweb" %% "lift-json" % "2.5+"

当我用sbt package构建时,它是成功的。

但是,当我尝试将其作为Spark作业运行时,像这样:

spark-submit 
  --packages com.amazonaws:aws-java-sdk-pom:1.10.34,org.apache.hadoop:hadoop-aws:2.6.0,net.liftweb:lift-json:2.5+ 
  --class "com.foo.MyClass" 
  --master local[4] 
  target/scala-2.10/my-app_2.10-0.0.1.jar

我得到这个错误:

Exception in thread "main" java.lang.RuntimeException: [unresolved dependency: net.liftweb#lift-json;2.5+: not found]
    at org.apache.spark.deploy.SparkSubmitUtils$.resolveMavenCoordinates(SparkSubmit.scala:1068)
    at org.apache.spark.deploy.SparkSubmit$.prepareSubmitEnvironment(SparkSubmit.scala:287)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:154)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

我在这里做错了什么?我的packages论点中的net.liftweb:lift-json:2.5+不正确吗?我需要在build.sbt中添加解析器吗?

用户还可以通过使用——packages提供maven坐标的逗号分隔列表来包含任何其他依赖项。

build.sbt中的

2.5+是Ivy版本匹配器语法,而不是Maven坐标所需的实际工件版本。spark-submit显然不使用常春藤分辨率(我认为这将是令人惊讶的,如果它做;您的应用程序可能会因为发布了新的依赖版本而突然停止工作)。所以你需要找到什么版本2.5+解析到您的情况下,例如使用https://github.com/jrudolph/sbt-dependency-graph(或试图找到它在show dependencyClasspath)。

相关内容

  • 没有找到相关文章