Объединение большого количества фреймов данных - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть массив фреймов данных, к которым я присоединяюсь, используя столбец «id» для создания большего фрейма данных

val dfArray = Array.fill[DataFrame](n)(spark.emptyDataFrame)
dfArray(0) = df_0
dfArray(1) = df_1
...
dfArray(n) = df_n

val output = dfArray.reduceLeft(_.join(_, Seq("id")))

Если я пытаюсь выполнить какое-либо действие (например, output.show) на output, это займет очень много времени. Иногда вылетает с ошибками OOM. Однако, если я записываю output в файл и считываю его обратно в другую переменную, он работает нормально.

Кто-нибудь знает, почему это так и как решить.

1 Ответ

2 голосов
/ 05 апреля 2019

Это связано с тем, что show требует collect, который централизует необходимые данные в драйвере приложения, а запись в файл (даже если код не указан) - нет.

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