Sqoop оптимизировал импорт в пограничный запрос Oracle - PullRequest
0 голосов
/ 14 сентября 2018

Недавно я работал над импортом данных из Oracle в HDFS с помощью Sqoop Import.

Вот один из полученных уроков:

Я начал наблюдать, что Sqoop медленно выполняет граничный запрос, например, импортированный набор данныхчерез 5 часов пограничный запрос занял 1 час.

Я посмотрел на базовый запрос, и он SELECT MIN(id), max(id) from user

Когда я выполнял этот запрос на огромной таблице (миллиарды записей), он зависи Oracle не ответил быстро .Принимая во внимание, что SELECT MIN(id) from user ИЛИ SELECT max(id) from user работает быстро.

У меня не было подробностей о структуре таблиц Oracle, информации об индексах и т. Д.

В этом посте я хочу рассказать о том, как я решил эту проблему в своеми спросите сообщество, если кто-то решил то же самое по-другому.

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

Я не уверен, что Sqoop все еще частоИспользуй, проголосуй за этот вопрос, если он все еще актуален, и я сделаю пост всех извлеченных уроков.

1 Ответ

0 голосов
/ 14 сентября 2018

Вот оптимизированный пограничный запрос, который мы используем:

SELECT
    *
FROM
    (
        SELECT
            MIN( id ) min_
        from
            user
    ) v1,
    (
        SELECT
            MAX( id ) max_
        from
            user
    ) v2;
...