Spark Parallelize? (Не удалось найти свойство creator с именем "id" )
Что вызывает эту ошибку Serialization в 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).
Нет трассировки стека сериализации, так как обычно закрытие рабочего не может быть сериализовано.
Какой еще способ отслеживать это?
Ответы
Ответ 1
@Интерфектор правильный. Я также столкнулся с этой проблемой, вот фрагмент из моего 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"
)
Ответ 2
Я подозреваю, что это вызвано путём classpath, предоставляющим вам другую версию jackson
, чем тот, который ожидает Spark (это 2.4.4, если я не ошибаюсь). Вам нужно будет отрегулировать свой путь к классам так, чтобы правильный jackson
был указан первым для Spark.
Ответ 3
У меня была такая же проблема с проектом, построенным с помощью Gradle, и я исключил транзитивные зависимости из проекта, создавшего проблему:
dependencies
{
compile('dependency.causing:problem:version')
{
exclude module: 'jackson-databind'
}
....
}
Это сработало отлично для меня.
Ответ 4
Это сработало для меня <dependency> excludeAll ExclusionRule(organization = "com.fasterxml.jackson.core")