У меня есть работа 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?
Не могли бы вы помочь мне в этом?
Вы можете использовать режим lastmodified
для инкрементного импорта lastmodified
.
Режим 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