Hadoop Spark 2.0不推荐使用';DirectParquetOutputCommitter';,没有它怎么生活?

Hadoop Spark 2.0不推荐使用';DirectParquetOutputCommitter';,没有它怎么生活?,hadoop,apache-spark,amazon-s3,amazon-emr,parquet,Hadoop,Apache Spark,Amazon S3,Amazon Emr,Parquet,最近,我们从“HDFS上的EMR”->“S3上的EMR”(启用一致视图的EMRFS)迁移,我们意识到Spark“SaveAsTable”(拼花格式)写入S3的速度比HDFS慢约4倍,但我们找到了使用DirectParquetOutputCommitter的解决方法-[1]w/Spark 1.6 S3缓慢的原因-我们必须支付所谓的拼花税-[2],其中默认输出提交程序写入临时表,并在S3中的重命名操作非常昂贵的情况下对其进行重命名 此外,我们也了解使用“DirectParquetOutputComm

最近,我们从“HDFS上的EMR”->“S3上的EMR”(启用一致视图的EMRFS)迁移,我们意识到Spark“SaveAsTable”(拼花格式)写入S3的速度比HDFS慢约4倍,但我们找到了使用DirectParquetOutputCommitter的解决方法-[1]w/Spark 1.6

S3缓慢的原因-我们必须支付所谓的拼花税-[2],其中默认输出提交程序写入临时表,并在S3中的重命名操作非常昂贵的情况下对其进行重命名

此外,我们也了解使用“DirectParquetOutputCommitter”的风险,这是启用推测性任务后数据损坏的可能性

现在,w/Spark 2.0这个类已经被弃用了,我们想知道在升级到Spark 2.0时,我们有哪些选项可以选择,这样我们就不会承受4倍于Spark 2.0的写入速度。如有任何想法/建议/建议,将不胜感激

我们可以想到的一个解决方法是:保存HDFS,然后通过s3DistCp将其复制到S3(当我们的Hive元数据存储指向S3时,您有没有想过如何以合理的方式实现这一点?)

看起来NetFlix已经解决了这个问题-[3],你知道他们计划什么时候开源吗

谢谢

[1] -

[2] -

[3]-

您可以使用:
sparkContext.hadoopConfiguration.set(“mapreduce.fileoutputcommitter.algorithm.version”,“2”)

因为您使用的是EMR,所以只需使用s3(不需要s3a)

我们正在使用Spark 2.0并以相当快的速度将拼花写入S3(大约与HDFS一样快)


如果您想阅读更多内容,请查看这张jira票证。我认为Netflix的S3提交人已经在以下位置公开了源代码:。

我刚刚遇到了相同的问题,并返回到emr 4.8。古玩,看看这里的答案。可以在此处找到更多信息:截至今天,它不支持编写拼花地板文件: