Sqoop在导出到Mysql时,使用4个Map任务,过程中有2个任务失败,那此时MySQL中存储了另外两个Map任务导入的数据,此时老板正好看到了这个报表数据。而开发工程师发现任务失败后,会调试问题并最终将全部数据正确的导入MySQL,那后面老板再次看报表数据,发现本次看到的数据与之前的不一致,这在生产环境是不允许的。
–staging-table方式
通过—stage -table选项指定一个staging表来克服这个问题,—stage -table选项充当一个辅助表,用于对导出的数据进行分段。阶段数据最终在单个事务中移动到目标表。(相当于使用一张临时表做了事务处理,如果成功则从临时表导出数据,如果失败则重新导入临时表)