Apache Spark Присоединиться к производительности - PullRequest
0 голосов
/ 16 октября 2018

У меня есть 2 таблицы, T1 и T2.T1 читается из Postgres и меньше по размеру, но постепенно увеличивается в объеме) (от 0 до hiveTableSize).T2 читается из Hive и больше по размеру (более 100 тыс. Строк).

Я выполняю LEFT_ANTI объединение как

T1.join(T2, column_name, "LEFT_ANTI").

Цель состоит в том, чтобы получить все строки из T1, которые не находятся вT2.После всех преобразований данные будут записаны в Postgres, и все данные будут прочитаны снова, когда задание будет выполнено на следующий день.

Я наблюдаю, что smallTable.join (largeTable) => имеет ли онвлияние на производительность.Моя работа выполняется в любом месте от 30 минут до 90 минут с указанным выше соединением, но если я прокомментирую это объединение, оно будет выполнено менее чем за 5 минут.

Оптимизирует ли Spark объединение больших таблиц с небольшими?

1 Ответ

0 голосов
/ 16 октября 2018

Если большая таблица на самом деле содержит только 100 тыс. Строк, это объединение должно выполняться в считанные секунды.Есть что-то кроме производительности соединения, вызывающее узкое место.Одна потенциальная проблема заключается в том, что количество разделов слишком велико.Это приводит к большим накладным расходам при обработке небольших наборов данных.

Попробуйте что-то вроде следующего

T1.coalesce(n).join(T2.coalesce(n), column_name, "LEFT_ANTI")

Где n - это небольшое целое число, в идеале 2 *количество доступных ядер исполнителя.функция объединения сокращает количество разделов в наборе данных.Честно говоря, в этом масштабе вы можете даже захотеть объединить в 1 раздел.

Обратите внимание, что таблицы, скорее всего, полностью считываются в Spark перед объединением.Поскольку вы объединяете два федеративных источника, единственный способ сделать объединение состоит в том, чтобы включить обе таблицы в сканирование Spark.Это может способствовать снижению производительности.Возможно, даже стоит скопировать таблицу PG в Spark перед объединением, в зависимости от того, где еще она используется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...