Необычный объем данных, извлекаемых в драйвер при вызове dataframe.collect в Spark - PullRequest
0 голосов
/ 20 ноября 2018

В моем искровом коде я собираю небольшой объект в драйвере из кадра данных.Я вижу следующее сообщение об ошибке на консоли.Я звоню dataframe.take(1) в моей программе.

Total size of serialized results of 13 tasks (1827.6 MB) is bigger than spark.driver.maxResultSize (1024.0 MB)

Это знает, что это можно решить, установив spark.driver.maxResultSize param.Но у меня вопрос: почему в драйвер загружается так много данных, когда размер собираемого объекта меньше МБ.Это тот случай, когда все объекты сначала сериализуются и загружаются в драйвер, а затем драйвер выбирает один из них (take(1)) для вывода.

1 Ответ

0 голосов
/ 20 ноября 2018

Из приведенного выше вопроса кажется, что вы хотели бы взять 1 строку из вашего кадра данных, которую можно получить с помощью приведенного ниже кода.

df.take(1)

Однако, когда вы выполните df.take(1).collect(), в этом случаебудет применен к результату take(1), который является другой коллекцией в Scala или Python (в зависимости от того, какой язык вы используете.)

Кроме того, почему вы хотите выполнить сбор на take (1)?

С уважением,

Neeraj

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