2016-06-03 1 views
0

В mysql у меня есть таблица mydb/emp с полями (eid, ename, esal).Sqoop incremental append

Здесь я попытался импортировать emp, используя incremental append в step1, не создавая работу и не передавая последнее значение.

sqoop import -- connect jdbc:mysql://localhost/myDB --table test --m 1 
--target-dir /user/cloudera/mydata --incremental append --check-column eid 

я получил результат с другим файлом в MyData с именем части-0001 .. с обновленными значениями от 0 до Ид последнего отл. eid 0 до 8 записей.

Но когда я сделал тот же код, используя работу, результат diffrent ...

sqoop job --create dayimport -- import --connect jdbc:mysql://localhost/myDB --table test --m 1 --target-dir /user/cloudera/mydata --incremental append --check-column eid 

sqoop job --exec dayimport 

Здесь я получил результат с другим файлом, но только обновляемой записи т.е. из последних значений ех. Я обновил таблицу с новой строкой eid 7,8. Таким образом, она состоит только из записей eid 7 и 8.

Может кто-нибудь объяснить, почему это происходит с работой не с обычным сценарием? Как определить последнее значение после столбца проверки, если огромная запись? любой прямой способ узнать последнее обновленное значение без проверки конечного значения?

ответ

0

В инкрементном импорте, если вы не указали последнее значение, sqoop импортирует все строки, но когда он сохраняется как задание, sqoop знает, откуда он импортируется, даже если последнее значение не задано. Вам не нужно, чтобы дать последнее значение, если вы планируете сделать сохраненную работу, но если вы хотите знать об этом, он дал таким образом:

--last-value 

Пожалуйста, см user guide.