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



我的SQL表是

mysql>从订单中选择*;

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

|订单号|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值指定的时间戳更新的行将导入

我不希望输出日期为"2012-09-10"的列。然而,我的输出,如下所示,

[manojpurohit17834325@ip-172-31-38-146~]$hadoop-fs-cat SqoopImp2/*

7000115.52012-10-0530055002

70002,65.262012-10-0530025001

7000399.992012-10-1030095003

70007948.5020012-09-1030055002

70009270.652012-09-1030015005

70000899.992012-09-1030025001

7001099.992012-10-10030045006

包含日期为20125-10-10的行。注意:输出目录以前不存在,它是由这次sqoop执行创建的。

从这次执行中,我看到最后一次修改中的日期包含在输出中,这与手册中提到的内容相反。请帮我理解这个差异,如果这里遗漏了什么,请纠正我。

yes--lastvalue也包含在结果中。in-增量导入2种可用模式:i)附加ii)上次修改的

append:在这种模式下,它只检查--lastvalue并从lastvalue开始导入。-->它没有导入任何以前的值,即使它们更新了

lastmodified:它也只与附加模式相同,但在这里它导入新行,如果更新了,也导入前几行。注意:lastmodified仅适用于日期或时间戳类型的列,仅适用于

相关内容

最新更新