Я предполагаю, что вы выполняете внутреннее соединение.
Ниже приведены шаги для оптимизации соединения - 1. Перед объединением мы можем отфильтровать t1 и t2 на основе наименьшего или наибольшего значения start_date, event_date, end_date.Это уменьшит количество рядов.
Проверьте, имеет ли набор данных t2 нулевое значение для field1, если не перед объединением, набор данных t1 может быть отфильтрован на основе условия notNull.Это уменьшит размер t1
Если ваша работа получает только несколько исполнителей, чем имеющийся, то у вас меньше разделов.Просто перераспределите набор данных, установите оптимальное число, чтобы не допустить большого количества разделов или наоборот.
Вы можете проверить правильность разбиения (без асимметрии), посмотрев время выполнения задач, оно должно быть похожим.
Проверить, еслименьший набор данных может быть помещен в память исполнителей, можно использовать broadcast_join.
Возможно, вы захотите прочитать - https://github.com/vaquarkhan/Apache-Kafka-poc-and-notes/wiki/Apache-Spark-Join-guidelines-and-Performance-tuning