调用:
时,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)。
没有序列化堆栈跟踪,正常工作者闭包无法序列化。
跟踪此问题的另一种方法是什么?
答案 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")