Объединение производительности фреймов данных в Spark

#apache-spark #apache-spark-sql

Вопрос:

Я соединяю два кадра данных, которые считывают csv-файлы из s3, и объединение их с помощью df.join этого занимает 9 минут при использовании по умолчанию spark.sql.shuffle.partitions (200).

Когда я переключаюсь spark.sql.shuffle.partitions на 10, это все равно занимает почти столько же времени.

Есть ли какой-либо способ улучшить выполнение одной и той же работы.

Кроме того, как динамически определять значение spark.sql.shuffle.partitions в производственном сценарии.

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

Ответ №1:

Одним из наиболее эффективных способов ускорения соединений spark является сведение к минимуму количества элементов в каждом фрейме данных; например, вы можете применить как можно больше фильтров к фреймам данных, прежде чем присоединяться к ним. Другой способ-использовать подход к широковещательным кадрам данных для меньших кадров данных (имейте в виду, что широковещательные кадры данных должны быть на величину меньше, чем другие). Для получения более подробной информации вы можете воспользоваться следующими советами по оптимизации соединения spark:

презентация databricks по оптимизации соединений apache-spark SQL

Настройка производительности apache-spark