gpt4 book ai didi

hadoop - 星火 2.2.0 FileOutputCommitter

转载 作者:可可西里 更新时间:2023-11-01 14:15:53 29 4
gpt4 key购买 nike

DirectFileOutputCommitter 在 Spark 2.2.0 中不再可用。这意味着写入 S3 需要非常长的时间(3 小时对 2 分钟)。我可以通过在 spark-shell 中将 FileOutputCommitter 版本设置为 2 来解决这个问题,

spark-shell --conf spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version=2 

同样不适用于 spark-sql

spark-sql --conf spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version=2 

上面的命令似乎设置了 version=2 但是当查询被执行时它仍然显示版本 1 的行为。

两个问题,

1) 如何使用 spark-sql 获取 FileOutputCommitter 版本 2 行为?

2) 有没有办法我仍然可以在 spark 2.2.0 中使用 DirectFileOutputCommitter? [我认为丢失数据的可能性不是零]

相关项目:

Spark 1.6 DirectFileOutputCommitter

最佳答案

我一直被这个问题击中。 Spark 不鼓励使用 DirectFileOutputCommitter,因为它可能会在竞争情况下导致数据丢失。算法版本 2 没有多大帮助。

我尝试使用 gzip 将数据保存在 s3 中,而不是 snappy 压缩,这带来了一些好处。

这里真正的问题是 spark 在 s3://<output_directory>/_temporary/0 中写入首先然后将数据从临时复制到输出。这个过程在 s3 中非常慢,(通常为 6MBPS)所以如果你获得大量数据,你会得到相当大的减速。

另一种方法是先写入 HDFS,然后使用 distcp/s3distcp 将数据复制到 s3。

此外,您可以寻找解决方案 Netflix provided .

我还没有评估过。

编辑:

新的spark2.4版本解决了s3写慢的问题。我发现在最新的 EMR 版本(5.24)中,spark2.4 和 hadoop 2.8 的 s3 写入性能几乎与 HDFS 写入性能相当。

查看文档

  1. https://aws.amazon.com/blogs/big-data/improve-apache-spark-write-performance-on-apache-parquet-formats-with-the-emrfs-s3-optimized-committer/

  2. https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-s3-performance.html

关于hadoop - 星火 2.2.0 FileOutputCommitter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46261754/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com