Взгляните на этот вопрос: Scala + Spark - Task not serializable: java.io.NotSerializableExceptionon. When calling function outside closure only on classes not objects.Spark - Задача не сериализуема: как работать со сложными закрытиями карт, вызывающими внешние классы/объекты?
Проблема:
Пусть мои картографы могут быть функциями (DEF), которые внутренне называют другие классы и создавать объекты и делать разные вещи внутри. (Или они могут даже быть классами, которые расширяют (Foo) => Bar, и выполняют обработку в методе их применения, но пока не будем игнорировать этот случай)
Spark поддерживает только Java Serialization для закрытий. Есть ли выход из этого? Можем ли мы использовать что-то вместо закрытия, чтобы делать то, что я хочу сделать? Мы можем легко делать такие вещи с Hadoop. Это единственное, что делает Искра почти непригодной для меня. Нельзя ожидать, что все сторонние библиотеки будут иметь все классы, расширяющие Serializable!
Возможные решения:
ли, кажется, что-то вроде этого, чтобы быть полезным: https://github.com/amplab/shark/blob/master/src/main/scala/shark/execution/serialization/KryoSerializationWrapper.scala
Это, конечно, кажется, как обертку ответ, но я не могу видеть, как именно.
Связанный: Кроме того, во избежание прохождения SparkContext в РДД карту/фильтр/flatMap и т. д., которые могут дать аналогичную ошибку. – RAbraham