#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