Сокращение времени приема SQOOP
Я работаю над получением данных из таблицы Oracle 'TRAN' в Hive.
Таблица Oracle «TRAN» является многораздельной, в ней 2 миллиарда строк.
Он разделен на столбец 'tran_date'.
В таблице TRAN есть также столбцы, такие как modify_date и Tranid.
Наше требование состоит в том, чтобы постепенно загружать таблицу кустов на основе modify_date.
Выберите * из TRAN, где modify_date = TRUNC (SYSDATE -1);
Мы используем разбиение по столбцам как Tranid
Проблема в том, что sqoop находит min (tranid), max (tranid), это занимает много времени,
КАК он использует запрос select min (tranid), max (tranid) froom TRAN, где modify_date> = и modify_date <= </p>
Так как он не использует tran_date (bsed, для которого исходная таблица разбита на разделы), то, похоже, в итоге выполняется сканирование таблицы
Я думаю использовать граничный запрос, например select min (tranid), max (tranid) из TRAN;
Пожалуйста, предложите, если это правильный подход?
Может принимать значения min (tranid) и max (tranid), и в зависимости от этого можно создать сплиты. Допустим, min равно 1, а max равно 100000000, но фактические записи, которые выбираются на основе запроса select, предполагают, что всего 10 записей. тогда я боюсь, что выше мин / мх приведет к неправильному разделению