как сократить время приема - PullRequest
0 голосов
/ 22 января 2019

Сокращение времени приема 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 записей. тогда я боюсь, что выше мин / мх приведет к неправильному разделению

...