#sqoop
#sqoop
Вопрос:
Рассмотрим таблицу отделов со следующими данными-
ID -1,2,3,8000
Name- A,B,C,D
Я импортировал данные в HDFS с помощью sqoop
Добавлены 2 новые строки с идентификаторами 4 и 5 в MySQL, выполнен инкрементный импорт с последним значением 3 и mode =append
Импортируемые данные содержат две строки для идентификатора 8000, поскольку используется условие department_id> 3 Как я могу настроить приведенную ниже команду, чтобы убедиться, что создаются повторяющиеся строки.
sqoop import
--connect "jdbc:mysql://quickstart.cloudera:3306/retail_db"
--username=retail_dba
--password=cloudera
--table departments
--target-dir/user/cloudera/dep1
--append
--check-column "department_id"
--incremental append
--last-value 3
Ответ №1:
Вы не можете настроить эту команду.
--incremental append
предназначен для добавления новых данных с --check-column
помощью > -last-value
.
Для вашего использования вы должны использовать --incremental lastmodified
.
--check-column
должны иметь типы данных date, time, datetime и timestamp.
Если вы добавили новые записи после --last-value
, будут извлечены все записи (новые или обновленные)
Пример команды:
sqoop import
--connect "jdbc:mysql://quickstart.cloudera:3306/retail_db"
--username=retail_dba
--password=cloudera
--table departments
--target-dir/user/cloudera/dep1
--incremental lastmodified
--check-column last_update_date
--last-value "2015-10-20 06:00:01"
Все записи, добавленные после "2015-10-20 06:00:01"
, будут импортированы.
Проверьте документацию sqoop для получения более подробной информации.
Комментарии:
1. Столбец last_update_date отсутствует в таблице.
2. last_update_date отсутствует в таблице. Следовательно, мы не можем его использовать, я полагаю.
3. @VarunJoshi для использования в таблице необходимо создать столбец даты или метки времени
--incremental lastmodified