整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

15.9.1 导出与事务

进程的并行特性决定了导出操作往往不是原子操作。Sqmjp会生成多个并行 执行的任务,分别导出数据的一部分。这些任务的完成时间各不相同,即


使在每个任务内部都使用事务,不同任务的执行结果也不可能同时提交。 此外,数据库系统经常使用固定大小的缓冲区来存储事务数据,这使得一 个任务中的所有操作不可能在一个事务中完成。Sqoop每导入几千条记录便 会执行一次提交,以确保不会出现内存不足的情况。在导出操作进行过程 中,提交过的中间结果都是可见的。因此在导出过程完成前,不要启动那 些要使用导出结果的应用程序,否则这些应用会看到不完整的导出结果。

为了解决这个问题,Sqoop可以将数据先导出到一个临时阶段表中,然后在 导出任务完成前(即导出操作成功执行后)在一个事务中将临时阶段表中的数 据全部移动到目标表中。可以通过–staging-table选项来指定一个临时 阶段表,这个临时阶段表必须是已经存在的,并且和目标表具有相同的模 式定义。如果不使用–clear-staging-table选项,则这个临时阶段表必 须是空表。

转载请注明:全栈大数据 » 15.9.1 导出与事务

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址