开发者社区> 问答> 正文

基于MultipartUpload的FileOutputFormat实现的意义是什么?

基于MultipartUpload的FileOutputFormat实现的意义是什么?

展开
收起
zxynnn 2022-05-10 12:09:52 358 0
1 条回答
写回答
取消 提交回答
  • 针对Spark访问OSS的特点,我们全新实现了Hadoop FileOutputFormat接口,如上图所示。算法的改进重点在优化合并操作,合并的核心是解决文件何时可见的问题。OSS提供MultipartUpload接口,也就是断点续传功能,文件可以分片上传,上传没有结束,分片文件是不可见的。借助该特性,我们可以让Task直接将数据写入到最终目录,只有作业成功才让文件最终可见,该方法不用先写入临时目录,也就大大减少了元数据的操作。对于执行失败的Task写入的临时分片,我们在作业结束时,执行Abort操作,就可以将其删除,这也就降低了空间占用。针对Spark典型ETL Benchmark Terasort,在1TB输入数据量的情况下,DLA FileOutputFormat执行时间缩短62%,性能提升163%。而针对动态分区场景,社区算法1运行失败,算法2可以执行成功,DLA FileOutputFormat算法相比算法2性能还要进一步提升124%。

    2022-05-10 13:04:35
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Architecting a Multi-Tenanted 立即下载
Architecting a Multi-Tenanted Platform 立即下载
低代码开发师(初级)实战教程 立即下载