【发布时间】:2014-07-21 22:20:44
【问题描述】:
我有一个要求,我需要从 mysql 导入一个表以增量配置配置单元,并且在这样做时遇到了问题。 这是我迄今为止尝试过的:
- 我已经创建了一个作业来使用下面提到的查询导入表。
/sqoop 作业
--create test2 -- import
--connect jdbc:mysql://URL
--username username
--password password
--table mysqlTablename
--hive-import
--hive-overwrite
--direct
--incremental lastmodified
--check-column last_modified_time
--last-value 0
第一次执行:按预期导入所有内容,最小边界为“0”,最大边界为当前时间。 第二次执行:获取上次运行的所有更改,但旧行被覆盖,只留下上次运行更改的行。
- 我删除了 --hive-overwrite 和 --hive-import 选项并使用了“--target-dir”选项。 第一次执行:按预期获取所有内容,最小边界为“0”,最大边界为当前时间,但由于元存储未更新,因此未显示在 Hive 中。 第二次执行:它抛出一个错误,指出作为参数提到的directoty --target-dir 选项已经存在。这在从 HDFS 中删除directoty 后执行,但不能解决目的。
我发现提到这是一个问题,除了将新值放入侧目录并在数据上运行 sqoop 合并以将其展平之外,还没有找到解决方案。我想在 shell 脚本中自动执行此操作,并想知道是否有更好的 处理这种增量更新的方法。
想要检查什么是满足要求的最佳选项,其中我需要导入 mysql 表并根据具有最后修改时间戳的列增量更新更改到 hive。 即根据 mysql 中的更改创建、更新或删除 Hive 表中的行以保持同步。
非常感谢您对此的任何帮助。
问候 罗希特
【问题讨论】: