Как отобразить фрейм данных строк времени и даты в искре на фрейм данных с логическими значениями? - PullRequest
0 голосов
/ 10 июля 2019

Я хочу проверить, все ли значения в моем фрейме данных имеют правильный формат "MM / dd / yy".

val df: DataFrame = spark.read.csv("----")

Однако всякий раз, когда я применяю карту функций:

df.map(x => right_format(x)).show()

и попробуйте показать этот новый набор данных / набор данных, я получаю несериализуемую ошибку.

Кто-нибудь знает почему?

Я пытался отлаживать с помощью отладчика intellij, но безрезультатно.

val df: DataFrame = spark.read.csv("----")
df.map(x => right_format(x)).show()

Ожидаемые результаты: структура данных логических значений Фактические результаты: несериализуемая ошибка.

1 Ответ

0 голосов
/ 10 июля 2019

Говорит ли непериализуемая ошибка что-то вроде SparkContext is non serializable?

Карта выполняется распределенным образом, и Spark пытается сериализовать и отправить right_format функцию def всем узлам.Похоже, что right_format определено в той же области видимости, что и объекты, такие как ваш экземпляр SparkContext (например, все ли это в вашем вызове метода main()?).

Чтобы обойти это, ядумаю, что вы могли бы сделать 1 из 2 вещей -

  1. Определить right_format() в блоке map
df.map(x => {
        def right_format(elem) = {...}
        right_format(x)
    }
).show()
Определите абстрактный объект или черту вспомогательных функций, которая включает функцию def для right_format.

Spark будет сериализовать этот объект и отправить его всем узлам.Это должно решить проблему, с которой вы столкнулись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...