【大数据】-- Spark 创建 tmp 目录的原因

本文探讨了Spark在处理大数据时,为何将结果先保存在 Temporary 目录,再移动到目标目录的原因。在DataWorks中调度Spark任务时遇到Job完成延迟的问题,源于Spark的两阶段提交策略,确保数据一致性。然而,这种机制在对象存储如OSS中可能导致效率降低,因为对象存储不支持移动操作,只能复制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

       数据流向:Spark 读取 ODPS 数据,然后写入阿里云 OSS。

       现象:在使用阿里云 dataworks 调度 Spark 任务时,发现Spark task 全部结束5分钟以后,整体的 job 没有显示 SUCCESSED。于是去查看程序对应的 OSS 输出目录,发现 _temporary 目录下的文件正在复制到目标目录,而不是 move 操作,导致花费时间过多。

       PS:输出到 OSS 的文件数量要合适,太多会导致过多的花费!

二、问题

       为什么 spark 在将结果保存到文件系统(块存储、文件存储和对象存储)时,会将结果文件上传到 _temporary 目录,然后将它们移动(或者复制)到目标文件夹,而不是直接将它们上传到输出文件夹?

三、分析

  1. 两阶段过程是在使用文件系统时确保最终结果的一致性的最简单方法之一。
  2. 您必须记住,每个执行器线程都写出其结果集独立于其他线程,并且可以在不同的时刻执行写入,甚至可以重用相同的资源集。在 Spark 写数据的那一刻,他无法确定所有写入是否会成功。
    • 如果失败,可以通过删除临时目录来回滚更改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oo寻梦in记

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值