我写了一个Sqoop脚本:
HADOOP_USER_NAME=hdfs sqoop import --connect jdbc:mysql://cmsmaster.cy9mnipcdof2.us-east-1.rds.amazonaws.com/db --username user -password-file /user/password/dbpass.txt --fields-terminated-by ',' --target-dir /user/db/sqoop_internal --delete-target-dir --hive-import --hive-overwrite --hive-table sqoop_internal --query '
SOME_QUERY where $CONDITIONS' --split-by id
这将复制查询结果并将其移至Hive表,覆盖其先前的内容。
现在我需要修改这个脚本,这样它就不会覆盖整个Hive表。相反,它应该覆盖该Hive表的分区。怎么做?
答案 0 :(得分:1)
根据您的问题,我了解您可能需要进行sqoop合并。
您需要删除:
--delete-target-dir and --hive-overwrite
并添加:
--incremental lastmodified --check-column modified --last-value '2018-03-08 00:00:00' --merge-key yourPrimaryKey
您可以从官方文档中找到更多信息。 https://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#_literal_sqoop_merge_literal