需要有关Sqoop增量进口的建议.假设我在第1天有一个策略1的客户,我在第1天在HDFS中导入了这些记录,我在Part Files中看到它们.
在第2天,同一客户添加了策略2,在增量导入sqoop运行之后,我们是否只在部件文件中获得新记录?在这种情况下,如何使用Sqoop获取旧的和增量的附加/最后修改记录?
考虑一个包含3条记录的表,您已使用sqoop将其导入hdfs
+------+------------+----------+------+------------+ | sid | city | state | rank | rDate | +------+------------+----------+------+------------+ | 101 | Chicago | Illinois | 1 | 2014-01-25 | | 101 | Schaumburg | Illinois | 3 | 2014-01-25 | | 101 | Columbus | Ohio | 7 | 2014-01-25 | +------+------------+----------+------+------------+ sqoop import --connect jdbc:mysql://localhost:3306/ydb --table yloc --username root -P
现在,您在表中有其他记录,但现有记录没有更新
+------+------------+----------+------+------------+ | sid | city | state | rank | rDate | +------+------------+----------+------+------------+ | 101 | Chicago | Illinois | 1 | 2014-01-25 | | 101 | Schaumburg | Illinois | 3 | 2014-01-25 | | 101 | Columbus | Ohio | 7 | 2014-01-25 | | 103 | Charlotte | NC | 9 | 2013-04-22 | | 103 | Greenville | SC | 9 | 2013-05-12 | | 103 | Atlanta | GA | 11 | 2013-08-21 | +------+------------+----------+------+------------+
在这里,您应该使用--incremental append
with --check-column
来指定要在要导入哪些行时要检查的列.
sqoop import --connect jdbc:mysql://localhost:3306/ydb --table yloc --username root -P --check-column rank --incremental append --last-value 7
上面的代码将根据最后一个值插入所有新行.
现在我们可以想到行中有更新的第二种情况
+------+------------+----------+------+------------+ | sid | city | state | rank | rDate | +------+------------+----------+------+------------+ | 101 | Chicago | Illinois | 1 | 2015-01-01 | | 101 | Schaumburg | Illinois | 3 | 2014-01-25 | | 101 | Columbus | Ohio | 7 | 2014-01-25 | | 103 | Charlotte | NC | 9 | 2013-04-22 | | 103 | Greenville | SC | 9 | 2013-05-12 | | 103 | Atlanta | GA | 11 | 2013-08-21 | | 104 | Dallas | Texas | 4 | 2015-02-02 | | 105 | Phoenix | Arzona | 17 | 2015-02-24 | +------+------------+----------+------+------------+
这里我们使用incremental lastmodified,我们将根据日期获取所有更新的行.
sqoop import --connect jdbc:mysql://localhost:3306/ydb --table yloc --username root -P --check-column rDate --incremental lastmodified --last-value 2014-01-25 --target-dir yloc/loc