Если большая таблица на самом деле содержит только 100 тыс. Строк, это объединение должно выполняться в считанные секунды.Есть что-то кроме производительности соединения, вызывающее узкое место.Одна потенциальная проблема заключается в том, что количество разделов слишком велико.Это приводит к большим накладным расходам при обработке небольших наборов данных.
Попробуйте что-то вроде следующего
T1.coalesce(n).join(T2.coalesce(n), column_name, "LEFT_ANTI")
Где n - это небольшое целое число, в идеале 2 *количество доступных ядер исполнителя.функция объединения сокращает количество разделов в наборе данных.Честно говоря, в этом масштабе вы можете даже захотеть объединить в 1 раздел.
Обратите внимание, что таблицы, скорее всего, полностью считываются в Spark перед объединением.Поскольку вы объединяете два федеративных источника, единственный способ сделать объединение состоит в том, чтобы включить обе таблицы в сканирование Spark.Это может способствовать снижению производительности.Возможно, даже стоит скопировать таблицу PG в Spark перед объединением, в зависимости от того, где еще она используется.