当前位置: 首页 > 知识库问答 >
问题:

火花运行错误java.lang.NoClassDefFoundError: org/codehaus/jackson/annotate/JsonClass

应和悦
2023-03-14
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import play.api.libs.json._
import java.util.Date
import javax.xml.bind.DatatypeConverter
object Test {
def main(args:Array[String]): Unit = {
    val logFile="test.txt"
    val conf=new SparkConf().setAppName("Json Test")
    val sc = new SparkContext(conf)
    try {
        val out= "output/test"
        val logData=sc.textFile(logFile,2).map(line => Json.parse(cleanTypo(line))).cache()

    } finally { 
        sc.stop()
    }
}

自从有人提到Spark-jackson冲突问题以来,我使用mvn版本重建了Spark:使用最新版本-Dincludes=org。科德豪斯。jackson:jackson core asl mvn版本:使用最新版本-Dincludes=org。科德豪斯。jackson:jackson mapper asl

因此,JAR已更新为1.9。但我仍然有错误

15/03/02 03:12:19 ERROR Executor: Exception in task 0.0 in stage 0.0 (TID 0)
java.lang.NoClassDefFoundError: org/codehaus/jackson/annotate/JsonClass
at      org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector.findDeserializationType(JacksonAnnotationIntrospector.java:524)
at org.codehaus.jackson.map.deser.BasicDeserializerFactory.modifyTypeByAnnotation(BasicDeserializerFactory.java:732)
at org.codehaus.jackson.map.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:427)
at org.codehaus.jackson.map.deser.StdDeserializerProvider._createDeserializer(StdDeserializerProvider.java:398)
at org.codehaus.jackson.map.deser.StdDeserializerProvider._createAndCache2(StdDeserializerProvider.java:307)
at org.codehaus.jackson.map.deser.StdDeserializerProvider._createAndCacheValueDeserializer(StdDeserializerProvider.java:287)
at org.codehaus.jackson.map.deser.StdDeserializerProvider.findValueDeserializer(StdDeserializerProvider.java:136)
at    org.codehaus.jackson.map.deser.StdDeserializerProvider.findTypedValueDeserializer(StdDeserializerProvider.java:157)
at     org.codehaus.jackson.map.ObjectMapper._findRootDeserializer(ObjectMapper.java:2468)
at org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2383)
at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1094)
at play.api.libs.json.JacksonJson$.parseJsValue(JsValue.scala:477)
at play.api.libs.json.Json$.parse(Json.scala:16)

共有1个答案

赖浩荡
2023-03-14

我们遇到了几乎完全相同的问题。我们试图使用1.9.2,但也遇到了一个没有这种方法的错误。

令人烦恼的是,不仅要处理1个版本冲突,还要处理2个版本冲突。首先,Spark依赖于Hadoop(对于hdfs),后者依赖于1.8。jackson json的x构建,这就是您看到的冲突。Spark(至少1.2)随后使用了jackson 2.4.4内核,该内核实际上已移至com。fasterxml。杰克逊。所以它实际上与1.8不冲突。由于程序包名称不同而导致。

因此,在您的情况下,如果您执行3件事中的1件,您的代码应该可以工作:

  1. 升级至2.4。x小于或等于2.4.4的内部版本,因为实际依赖关系将被2.4.4的sparks替代(在撰写本文时)

不幸的是,由于spark的性质,以及它如何在类路径上拥有自己的所有内部依赖关系,因此任何有冲突的作业依赖关系都将永远无法解决,因此还会出现更多类似这样的问题。Spark已经对guava这样的软件包进行了一些依赖性着色来避免这个问题,但目前jackson还没有这样做。

 类似资料:
  • 每次使用cassandra connector在spark中运行scala程序时都会出现此错误 这是我的程序

  • 我在运行下面我写的SPARK代码时出错了。我试图根据键找到所有向量的总和。每个输入行以键(整数)开始,然后是127个浮点数,这是一个具有127个维度的单个向量,即每一行以键和向量开始。

  • 我的spark程序在小数据集上运行良好。(大约400GB)但是当我将其扩展到大型数据集时。我开始得到错误

  • 我正在使用Apache Spark的示例代码follow文档:https://spark.apache.org/docs/latest/ml-features.html#countvectorizer 但我收到错误消息: 22年10月15日23:04:20信息BlockManagerMaster:使用703.6 MB RAM注册block manager localhost:56882,Block

  • 一些脚本在工作时什么也不做,当我手动运行它们时,其中一个失败了,出现了以下消息: 错误SparkUI:未能绑定SparkUI java.net.bindexception:地址已在使用:服务“SparkUI”在重试16次后失败! 所以我想知道是否有一种特定的方法来并行运行脚本?

  • 我刚从Spark开始。我已经用Spark安装了CDH5。然而,当我尝试使用sparkcontext时,它给出了如下错误 我对此进行了研究,发现了错误:未找到:值sc 并试图启动火花上下文。/Spark-shell。它给错误