Sqoop增量lastlastmodified选项是否包括结果中最后一个值中提到的日期?

时间:2019-01-04 10:17:07

标签: sqoop

我的SQL表是

mysql>从“订单”中选择*;

+ -------- + ----------- + ------------ + ------------ -+ ------------- +

| ord_no | purch_amt | ord_date | customer_id | salesman_id |

+ -------- + ----------- + ------------ + ------------ -+ ------------- +

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

+ -------- + ----------- + ------------ + ------------ -+ ------------- +

我运行了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    模式。当源表的行可能会更新时,应该使用此方法,并且每次此类更新会将上次修改的列的值设置为当前时间戳。导入检查列保存的时间戳比--last-value 指定的时间戳更新的行

我不希望输出中的日期为“ 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中的日期包含在输出中,这与手册中提到的相反。请帮助我了解这种差异,如果在此处缺少任何内容,请纠正我。

1 个答案:

答案 0 :(得分:0)

-lastvalue 也包含在结果中。 在--incremental import中有2种可用模式:i)附加ii)最后修改

追加:在此模式下,它仅检查--lastvalue并从最后一个值开始导入。  ->即使以前的值已更新,也不会导入

上次修改:它也仅与附加模式相同,但是在此它会导入新行,并且如果更新了之前的行,也会导入它们。 注意:lastmodified仅在唯一的日期或时间戳类型列上起作用