Как мне синхронизировать таблицу mysql с таблицей кустов? (sqoop - не поддерживается импорт последнего измененного куста) - PullRequest
0 голосов
/ 11 января 2019

Я хочу синхронизировать таблицу MySQL в таблице кустов. Потому что записи в таблице orders обычно меняются в ближайшем будущем. Мне нужно обновить их в улей.

Например,

  1. Я сбрасываю все данные MySQL в улей
  2. ежедневное задание проверяет измененную запись, которая time_update находится в течение почти 1 дня, и обновляет их в таблице кустов.

Я пробовал --incremental lastmodified, как показано ниже

sqoop import \
"-Dorg.apache.sqoop.splitter.allow_text_splitter=true" \
--connect $DB_URL \
--username $USERNAME \
--password $PASSWORD \
--direct \
--fields-terminated-by '\t' \
--target-dir '/data/hive/' \
--delete-target-dir \
--hive-database $HIVE_DB \
--hive-table $HIVE_TABLE \
--hive-import \
--hive-overwrite \
--create-hive-table \
--query 'select * from '$HIVE_TABLE' where $CONDITIONS' \
--split-by id \
-m 6 \
--merge-key id \
--incremental lastmodified \
--check-column time_update \
--last-value "2019-01-01 21:00:00"

Получена ошибка --incremental lastmodified option for hive imports is not supported. Please remove the parameter --incremental lastmodified.

Как правильно обходиться без --incremental lastmodified option.

1 Ответ

0 голосов
/ 17 января 2019

Во-первых, вы должны удалить - delete-target-dir и - create-hive-table , так как при инкрементальном импорте целевой каталог останется без изменений. поэтому --delete-target-dir не будет работать с аргументом --incremental. Кроме того, таблица кустов должна создаваться только один раз, поэтому вам нужно удалить аргумент --create-hive-table и вручную создать таблицу кустов в кусте с той же схемой, выбрать местоположение этой схемы и использовать ее как --target-dir.

sqoop import \
--connect <<db_url>> \
--username <<username>> \
--password <<password>> \
--direct \
--fields-terminated-by '\t' \
--hive-database <<hive_db>> \
--hive-table <<hive_table>> \
--hive-import \
--hive-overwrite \
--query 'select * from <<db_table>> where $CONDITIONS' \
--split-by product_id \
-m 6 \
--merge-key product_id \
--incremental lastmodified \
--check-column timedate \
--last-value 0 \
--target-dir /user/hive/warehouse/problem5.db/products_hive (<<hive_table_location>>)

Это будет работать успешно, если нет, дайте мне знать.

...