Говорит ли непериализуемая ошибка что-то вроде SparkContext is non serializable
?
Карта выполняется распределенным образом, и Spark пытается сериализовать и отправить right_format
функцию def всем узлам.Похоже, что right_format
определено в той же области видимости, что и объекты, такие как ваш экземпляр SparkContext
(например, все ли это в вашем вызове метода main()
?).
Чтобы обойти это, ядумаю, что вы могли бы сделать 1 из 2 вещей -
- Определить
right_format()
в блоке map
df.map(x => {
def right_format(elem) = {...}
right_format(x)
}
).show()
Определите абстрактный объект или черту вспомогательных функций, которая включает функцию def для
right_format
.
Spark будет сериализовать этот объект и отправить его всем узлам.Это должно решить проблему, с которой вы столкнулись.