Подтвердить что ты не робот

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).

Нет трассировки стека сериализации, так как обычно закрытие рабочего не может быть сериализовано.

Какой еще способ отслеживать это?

4b9b3361

Ответ 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")