Изменение количества разделов pyspark dataframe, считанных из паркета

Я хочу понять, как spark обрабатывает чтение Dataframe из файлов паркета и каковы свойства приложения Yarn или свойства sparkConf, которые влияют на количество разделов при выполнении первого действия на этом кадре данных.

Контекст:

  • У меня есть паркетные файлы, хранящиеся в Hadoop.
  • Я хочу прочитать данные за несколько месяцев => несколько файлов паркета.
  • Используемая по умолчанию конфигурация для приложения:
spark.yarn.am.cores = 8
spark.executor.cores = 8
spark.executor.memory = 8g

Я сначала делаю:

file_data_frame = spark_session.read.parquet(*source_file_paths)

и затем, так как мне нужно только рассмотреть некоторые фильтры в кадре данных. Я выполняю искровой SQL-запрос на file_data_frame, например:

df = file_data_frame.select(columns).where((func.col("col1") == value1) & (func.col("col2").isin(value2)) & (func.col("col3").isin(list_of_values3)))

Q1: Мой вопрос на этом шаге, конечно, после выполнения действия над фреймом данных, будет ли запускать чтение всех файлов паркета, всех столбцов? или просто прочитайте столбцы, которые я вставил в свой запрос, и выберите из них строки, которые соответствуют указанным значениям?

Пример этапа работы, начатого действием:

Q2: Размер ввода, который я вижу в деталях этапа на картинке выше, это размер Dataframe или размер всех рассматриваемых файлов паркета? Насколько я понимаю, это размер паркетных файлов, которые рассматриваются вначале, а не датафрейм.

Q3: Какие конфигурации влияют на количество разделов (43k) здесь? spark.executor.instances а также spark.executor.cores? Что делать, если эти свойства оставлены для Yarn Scheduler для динамической обработки, установив spark.dynamicAllocation.enabled true? Как я могу настроить номер раздела в этом случае?

Если я снова сохраню тот же самый фрейм данных в файл паркета, а затем прочту его обратно. Затем выполните действие, я нахожу его в 1300 разделах. Q4: почему?

В5: Какая разница между этими разделами перед сохранением в файл паркета и повторным чтением дает представление о настройке производительности? (имеется в виду, как я могу лучше прочитать данные с первого раза, чтобы избежать такого огромного количества разделов = 43k)

0 ответов

Другие вопросы по тегам