是否可以将json4s 3.2.11与Spark 1.3.0一起使用?

Ale*_*iev 5 scala sbt json4s sbt-assembly apache-spark

Spark依赖于json4s 3.2.10,但是这个版本有几个bug,我需要使用3.2.11.我在build.sbt中添加了json4s-native 3.2.11依赖,所有编译都很好.但是当我点火提交我的JAR时,它为我提供了3.2.10.

build.sbt

import sbt.Keys._

name := "sparkapp"

version := "1.0"

scalaVersion := "2.10.4"

libraryDependencies += "org.apache.spark" %% "spark-core"  % "1.3.0" % "provided"

libraryDependencies += "org.json4s" %% "json4s-native" % "3.2.11"`
Run Code Online (Sandbox Code Playgroud)

plugins.sbt

logLevel := Level.Warn

resolvers += Resolver.url("artifactory", url("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.13.0")
Run Code Online (Sandbox Code Playgroud)

App1.scala

import org.apache.spark.SparkConf
import org.apache.spark.rdd.RDD
import org.apache.spark.{Logging, SparkConf, SparkContext}
import org.apache.spark.SparkContext._

object App1 extends Logging {
  def main(args: Array[String]) = {
    val conf = new SparkConf().setAppName("App1")
    val sc = new SparkContext(conf)
    println(s"json4s version: ${org.json4s.BuildInfo.version.toString}")
  }
}
Run Code Online (Sandbox Code Playgroud)

sbt 0.13.7 + sbt-assembly 0.13.0 Scala 2.10.4

有没有办法强制使用3.2.11版本?

Nec*_*cro 2

这不是您问题的答案,但在搜索我的问题时出现了这个问题。我在 json4s 的“渲染”中的formats.emptyValueStrategy.replaceEmpty(value) 中收到 NoSuchMethod 异常。原因是我使用 3.2.11 进行构建,但 Spark 正在链接 3.2.10。我降级到 3.2.10,问题就消失了。您的问题帮助我了解了发生的情况(Spark 正在链接 json4s 的冲突版本),并且我能够解决该问题,所以谢谢。