sqoop incremental lastmodified选项是否在结果中包含上次值中提到的日期?

pbgvytdp  于 2021-06-03  发布在  Sqoop
关注(0)|答案(13)|浏览(352)

我的sql表是
mysql>从订单中选择*;
+--------+

vxf3dgd4

vxf3dgd46#

---+
| 70001 | 150.50 | 2012-10-05 | 3005 | 5002 |
| 70009 | 270.65 | 2012-09-10 | 3001 | 5005 |
| 70002 | 65.26 | 2012-10-05 | 3002 | 5001 |
| 70004 | 110.50 | 2012-08-17 | 3009 | 5003 |
| 70007 | 948.50 | 2012-09-10 | 3005 | 5002 |
| 70005 | 999.99 | 2012-07-27 | 3007 | 5001 |
| 70008 | 999.99 | 2012-09-10 | 3002 | 5001 |
| 70010 | 999.99 | 2012-10-10 | 3004 | 5006 |
| 70003 | 999.99 | 2012-10-10 | 3009 | 5003 |
| 70012 | 250.45 | 2012-06-27 | 3008 | 5002 |
| 70011 | 75.29 | 2012-08-17 | 3003 | 5007 |
| 70013 | 999.99 | 2012-04-25 | 3002 | 5001 |
+--------+

kknvjkwl

kknvjkwl7#

---+
|订单号|采购金额|订单日期|客户号|销售员号||
+--------+

dy1byipe

dy1byipe9#

是,--lastvalue也包含在结果中。in—增量导入2种可用模式:i)append ii)lastmodified
追加:在这种模式下,它只检查--lastvalue并从lastvalue开始导入。-->它不会导入任何以前的值,即使它们已更新
lastmodified:它也与append模式相同,但是在这里它导入新行,如果更新了,也导入以前的行。注意:lastmodified只处理日期或时间戳类型的列

vfh0ocws

vfh0ocws12#

---+
我运行了一个sqoop导入

sqoop import --connect jdbc:mysql://ip-172-31-20-247:3306/sqoopex -- 
username sqoopuser --password <hidden> --table Orders --target-dir 
SqoopImp2 --split-by ord_no --check-column ord_date --incremental 
lastmodified --last-value '2012-09-10'

根据以下sqoop 1.4.6手册,
sqoop支持的另一种表更新策略称为lastmodified模式。当源表的行可能被更新时,您应该使用这个选项,并且每次这样的更新都会将上次修改的列的值设置为当前时间戳。在check列中保存的时间戳比用--last值指定的时间戳更新的行将被导入
我不希望输出中出现日期为“2012-09-10”的列。但是我的输出,如下所示,
[manojpurohit17834325@ip-172-31-38-146 ~]$hadoop fs-cat sqoopimp2/*
70001,150.50,2012-10-05,3005,5002
70002,65.26,2012-10-05,3002,5001
70003,999.99,2012-10-10,3009,5003
70007,948.50,2012-09-10,3005,5002
70009,270.65,2012-09-10,3001,5005
70008,999.99,2012-09-10,3002,5001
70010,999.99,2012-10-10,3004,5006
包含日期为20125-10-10的行。注意:输出目录在前面不存在,它是由这个sqoop执行创建的。
从这个执行中,我看到输出中包含了--last modified中的日期,这与手册中提到的相反。请帮助我理解这种差异,并纠正我,如果我遗漏了什么。

相关问题