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

标签 scala sbt apache-spark sbt-assembly json4s

Spark 依赖 json4s 3.2.10,但是这个版本有几个 bug,我需要使用 3.2.11。我将 json4s-native 3.2.11 依赖项添加到 build.sbt 并且一切都编译得很好。但是当我提交我的 JAR 时,它为我提供了 3.2.10。

生成.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"`

插件.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")

应用程序1.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}")
  }
}

sbt 0.13.7 + sbt 组装 0.13.0
斯卡拉 2.10.4

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

最佳答案

我们遇到了一个类似于 Necro 描述的问题,但是在构建组装 jar 时从 3.2.11 降级到 3.2.10 并没有解决它。我们最终通过在作业程序集 jar 中对 3.2.11 版本进行着色来解决它(使用 Spark 1.3.1):

assemblyShadeRules in assembly := Seq(
  ShadeRule.rename("org.json4s.**" -> "shaded.json4s.@1").inAll
)

关于scala - 是否可以将 json4s 3.2.11 与 Spark 1.3.0 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29216712/

相关文章:

scala - 检测传递给 Ints 列表上的 flatMap 的函数中的参数类型

scala - 如何在 play/activator 中设置堆大小?

scala - 如何发布带有校验和(MD5、SHA1)的工件?

apache-spark - Apache Spark 中的 mapPartitions 和 foreachPartition 有什么区别

python - Scala 相当于 Python 生成器?

scala - 在 Scala 中将文件名拆分为绝对路径

Scala 流性能

java - 从资源中使用 config.yaml 启动 Dropwizard

mongodb - Spark scala 使用 spark-mongo connector 进行 upsert

apache-spark - shuffle 文件期间 apache spark(1.6) 作业中的 FileNotFoundException