Как настроить искровую конфигурацию для уменьшения перетасовки при работе с кластеризацией k-средних? - PullRequest
0 голосов
/ 06 сентября 2018

Я знаю, что есть много «Как настроить работу Spark» и т. Д. В блогах и темах, но, к сожалению, я стремлюсь работать со встроенным модулем кластеризации в pyspark (k-means), поэтому такие предложения, как «Использовать limitByKey вместо groupByKey» мне все еще не очень помогает, так как я не могу реально контролировать то, что происходит в коде после того, как я вызываю алгоритм кластеризации, и, очевидно, он потребляет огромный объем дискового пространства для перетасовки (работает на DataFrame размером 25 Гб).

Есть ли способ, например, предлагаемая настройка конфигурации (память исполнителя и т. Д.), Который я могу использовать, чтобы обойти эту проблему? Я бы предпочел, если возможно, сохранить используемое дисковое пространство для файлов tmp под 100-150 Гб.

В целом, я был бы признателен за любую информацию от любого, кто на самом деле использовал один из алгоритмов кластеризации из mllib для больших данных (или большого числа, как у меня). Удалось ли вам как-то избежать масштабных перетасовок, и если да, то как?

Спасибо!

1 Ответ

0 голосов
/ 06 сентября 2018

у вас достаточно ресурсов 48 ядер и 252 Гб, поэтому используйте, если имя вашего фрейма данных равно df, перед запуском кода k означает, что кешируйте свои данные, вы можете использовать метод persist или кеш для того же:

df.persist()
df.count()

или

df.cache()
df.count()

нам нужно выполнить какое-то действие для кэширования кадра данных в памяти, после этого ваша перестановка будет определенно уменьшена, и, пожалуйста, дайте мне знать, это работает для вас или нет

...