我想将mysql表同步到配置单元表中。因为orders
表中的记录通常在不久的将来会发生变化。我需要将它们更新为配置单元。
例如,
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
的正确方法是什么。
答案 0 :(得分:0)
首先,您必须删除-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>>)
如果不让我知道,它将成功运行。