sqoop добавочный импорт обновленная строка и вновь созданная запись - PullRequest
0 голосов
/ 24 июня 2018

У меня задание sqoop создано с добавочным добавлением с последним значением

Работа:

sqoop job --create myjob2 -- import --connect jdbc:mysql://host/DBnam -username user -password passwor --table savingssmal --check-column id --incremental append --last-value 0 --target-dir /user/xxxx/prac/sqoop --split-by id --as-parquetfile -m 1

Мой вопрос: я хочу импортировать вновь созданную запись, а также обновленную запись в таблицу mysql?

Не могли бы вы помочь мне в этом?

1 Ответ

0 голосов
/ 29 июня 2018

Вы можете использовать режим lastmodified для пошагового импорта Sqoop.

Режим append (используемый в вашем примере) используется для импорта строк на основе увеличения значений идентификатора строки.Таким образом, при выполнении задания оно будет импортировать строки, в которых --check-column (т. Е. id) больше --last-value (т. Е. 0).Если строка обновляется, id обычно не изменяется, а обновленная строка не импортируется.

Режим lastmodified используется для импорта строк на основе столбца метки времени (например,last_modified_time).Когда задание выполняется, оно импортирует строки, в которых --check-column более поздний, чем указано в --last-value.Запись приложения в таблицу должна обновлять столбец last_modified_time при вставках и обновлениях.Таким образом, как новые, так и обновленные строки будут импортированы при выполнении задания Sqoop.

Пример вызова на основе вашего примера с режимом lastmodified будет выглядеть следующим образом:

sqoop job --create myjob2 -- import --connect jdbc:mysql://host/DBnam -username user -password passwor --table savingssmal --check-column last_update_time --incremental lastmodified --last-value "2018-02-03 04:38:39.0" --target-dir /user/xxxx/prac/sqoop --as-parquetfile -m 1
...