Распараллеленные коллекции в Spark - PullRequest
0 голосов
/ 05 мая 2018

Что такое концепция «параллельных коллекций» в Spark, и как эта концепция может улучшить общую производительность работы? Кроме того, как для этого должны быть настроены разделы?

1 Ответ

0 голосов
/ 05 мая 2018

Параллельные коллекции предоставляются на языке Scala как простой способ распараллеливания обработки данных в Scala. Основная идея заключается в том, что когда вы выполняете такие операции, как map, filter и т. Д. ... с коллекцией, можно распараллелить ее, используя пул потоков. Этот тип распараллеливания называется распараллеливанием данных, поскольку он основан на самих данных. Это происходит локально в JVM, и Scala будет использовать столько потоков, сколько ядер доступно для JVM.

С другой стороны, Spark основан на RDD, который представляет собой абстракцию, представляющую распределенный набор данных. В отличие от параллельных коллекций Scala, эти наборы данных распределены по нескольким узлам. Spark также основан на параллелизме данных, но на этот раз распределяется параллелизм данных. Это позволяет вам распараллеливать намного больше, чем в одной JVM, но также создает другие проблемы, связанные с перестановкой данных.

Таким образом, Spark реализует систему параллелизма распределенных данных, поэтому каждый раз, когда вы выполняете map, filter и т. Д. ... вы делаете что-то похожее на то, что будет делать параллельная коллекция Scala, но распределенным способом. Также единицей параллелизма в Spark являются разделы, а в коллекциях Scala - каждая строка.

Вы всегда можете использовать параллельные коллекции Scala внутри задачи Spark для распараллеливания в задаче Spark, но вы не обязательно увидите улучшение производительности, особенно если ваши данные уже равномерно распределены в вашем RDD, и каждая задача требует примерно одинакового вычислительного объема. ресурсы для выполнения.

...