为什么sqoop没有在并行执行中为最后修改的值保存元数据?

时间:2019-05-06 17:51:53

标签: hadoop sqoop sqoop2

我正在使用sqoop版本sqoop-1.4.6.bin__hadoop-0.23。

我正在导入Oracle数据,并且为此我创建了增量sqoop作业。

我正在使用以下查询创建sqoop作业:-

sqoop job --create JOB_NAME -- import  --connect jdbc:oracle:thin:/system@HOST:PORT:SERVICE --username USERNAME --password-file /PWD_FILE.password --fields-terminated-by ',' --enclosed-by '"'  --table USERNAME.TABLE_NAME --target-dir /TARGET_DIR  -m 1 --incremental append --check-column DT_COLUMN --last-value '2019-01-01 00:00:00.000'  --split-by PRIMARY_KEY --null-string ""  --null-non-string ""

我创建了另外15个sqoop作业,以导入oracle表的增量数据。

我一次执行3个sqoop作业,这意味着三个sqoop作业将与一个mapper并行运行。

在最初的10到15天内,一切都很好,并且作业可以成功运行,但是之后,一些sqoop作业没有将最后一个值保存到其元数据中,并且每次都导入重复数据。

以下是日志:-

5月5日的日志-

19/05/05 01:37:10 INFO tool.ImportTool: Lower bound value: 
TO_TIMESTAMP('2019-04-26 21:25:19.0', 'YYYY-MM-DD HH24:MI:SS.FF')
19/05/05 01:37:10 INFO tool.ImportTool: Upper bound value: 
TO_TIMESTAMP('2019-05-04 21:25:25.0', 'YYYY-MM-DD HH24:MI:SS.FF')

5月6日的日志

19/05/06 01:37:34 INFO tool.ImportTool: Lower bound value: 
TO_TIMESTAMP('2019-04-26 21:25:19.0', 'YYYY-MM-DD HH24:MI:SS.FF')
19/05/06 01:37:34 INFO tool.ImportTool: Upper bound value: 
TO_TIMESTAMP('2019-05-05 21:25:23.0', 'YYYY-MM-DD HH24:MI:SS.FF')

In these logs you can see it is using '2019-04-26 21:25:19.0' as lower bound value for each import means daily I'll be getting duplicate data.

现在,我想知道由于并行执行sqoop作业而面临这个问题吗?

如果是,那我应该如何解决这个问题?

注意:我没有将任何外部metastore用于sqoop。

任何有关此问题的帮助将不胜感激。

谢谢

0 个答案:

没有答案