#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. Спасибо за ваш ответ! Я думаю, вы решили мою проблему!