В чем разница между ShuffledRDD, MapPartitionsRDD и ParallelCollectionRDD?

#apache-spark #pyspark #rdd

#apache-spark #pyspark #rdd

Вопрос:

Я просто использую два разных способа генерации Spark RDD. И результаты в диаграмме базы данных пользовательского интерфейса Spark сильно отличаются.

введите описание изображения здесь

введите описание изображения здесь

Может кто-нибудь научить меня различиям, и в моей работе первый работает быстрее, чем второй, с аналогичной операцией.

Комментарии:

1. пожалуйста, опубликуйте некоторый код о том, как вы создаете два rdd по-разному?

Ответ №1:

В вашем 1-этапном DAG вы просто создаете RDD с коллекцией, а во втором RDD вы перетасовываете RDD с помощью partitionBy, чтобы ваши данные перетасовывались по кластеру. Итак, из-за перетасовки данных ваш процесс идет медленно на 2-м этапе.

Разница между ShuffledRDD, MapPartitionsRDD и ParallelCollectionRDD:

ShuffledRDD: ShuffledRDD создается при перетасовке данных по кластеру. Если вы используете какое-либо преобразование (например, join, groupBy, перераспределение и т. Д.), Которое перетасовывает ваши данные, Оно создаст shuffledRDD.

MapPartitionsRDD: MapPartitionsRDD будет создан при использовании преобразования mapPartition.

ParallelCollectionRDD: ParallelCollectionRDD создается при создании RDD с помощью объекта collection.

Если вы хотите узнать больше подробностей, пожалуйста, проверьте это, чтобы вам было понятнее https://github.com/JerryLead/SparkInternals

Комментарии:

1. Спасибо за ваш ответ! Я думаю, вы решили мою проблему!