Sqoop将数据从MySQL表复制到分区的Hive表

时间:2018-03-08 09:44:05

标签: mysql hadoop hive sqoop

我写了一个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表的分区。怎么做?

1 个答案:

答案 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