Pyspark: OutOfMemoryError on count () - PullRequest
0 голосов
/ 04 июня 2018

Это дополнительный запрос к моему предыдущему одному : следуя этому предложению, я получил процентное изменение строки за строкой, и поскольку первая строка в фрейме данных df_diff (df) была равна нулю, Я сделал:

df_diff = df_diff.dropna()
df_diff.count()

Второе утверждение выдает следующую ошибку:

Py4JJavaError: An error occurred while calling o1844.count.
: java.lang.OutOfMemoryError: Java heap space

Когда я пытаюсь использовать приведенный выше код на игрушечном df, опубликованном в предыдущем посте, он работает нормально, но с моимфактический фрейм данных (834 строки, 51 столбец) происходит вышеупомянутая ошибка.Любое руководство относительно того, почему это происходит и как справиться с этим, будет высоко ценится.Спасибо

РЕДАКТИРОВАТЬ:

В моем фактическом кадре данных (df) 834 X 51, первый столбец - дата, а остальные столбцы закрывают цены акций для 50 акций, для которых я пытаюсьполучить ежедневные процентные изменения.Разделение окна по дате col не имело значения для предыдущей ошибки в этом файле df в pyspark, и, похоже, нет другого естественного кандидата для разделения.

Единственное, что сработало, было сделать это в спарк-оболочке.Здесь без разделов я получал предупреждающие сообщения ...

WindowExec: No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation.

... пока я не вызвал cache () на фрейме данных, но это не идеально для большого df

1 Ответ

0 голосов
/ 04 июня 2018

Ваш исходный код просто не масштабируется.Следующее определение окна

w = Window.orderBy("index")

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

В зависимости от данных, вы можете попробовать более сложный подход, напримеродно шоу в Избегайте влияния на производительность режима одного раздела в оконных функциях Spark

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