Spark Parallelize? (找不到名为'id'的创建者属性)

时间:2015-06-25 00:34:22

标签: serialization apache-spark

调用:

时,Apache Spark 1.4.0中出现此序列化错误的原因
sc.parallelize(strList, 4)

抛出此异常:

com.fasterxml.jackson.databind.JsonMappingException: 
Could not find creator property with name 'id' (in class org.apache.spark.rdd.RDDOperationScope)

杰克逊中的addBeanProps投掷:com.fasterxml.jackson.databind.deser.BeanDeserializerFactory #addBeanProps

RDD是Seq [String],而#partitions似乎并不重要(试过1,2,4)。

没有序列化堆栈跟踪,正常工作者闭包无法序列化。

跟踪此问题的另一种方法是什么?

4 个答案:

答案 0 :(得分:41)

@Interfector是正确的。我也遇到了这个问题,这是我的sbt文件和'dependencyOverrides'部分的片段,它修复了它。

libraryDependencies ++= Seq(
  "com.amazonaws" % "amazon-kinesis-client" % "1.4.0",
  "org.apache.spark" %% "spark-core" % "1.4.0",
  "org.apache.spark" %% "spark-streaming" % "1.4.0",
  "org.apache.spark" %% "spark-streaming-kinesis-asl" % "1.4.0",
  "com.amazonaws" % "aws-java-sdk" % "1.10.2"
)

dependencyOverrides ++= Set(
  "com.fasterxml.jackson.core" % "jackson-databind" % "2.4.4"
)

答案 1 :(得分:10)

我怀疑这是由于类路径为你提供的不同版本jackson而不是Spark所期望的版本(如果我不是,那么 2.4.4 误)。您需要调整类路径,以便首先为Spark引用正确的jackson

答案 2 :(得分:1)

我使用Gradle构建的项目遇到了同样的问题,我从创建问题的项目中排除了传递依赖项:

dependencies
{
    compile('dependency.causing:problem:version')
    {
        exclude module: 'jackson-databind'
    }

....

}

这对我很有用。

答案 3 :(得分:0)

这对我有用<dependency> excludeAll ExclusionRule(organization = "com.fasterxml.jackson.core")