最近我们从"EMR on HDFS" - >"EMR on S3"(启用了一致视图的EMRFS)迁移,我们意识到与HDFS相比,写入S3的Spark'SaveAsTable'(镶木地板格式)速度慢约4倍但我们发现使用DirectParquetOutputCommitter - [1] w/Spark 1.6的解决方法.
S3缓慢的原因 - 我们不得不支付所谓的Parquet tax- [2],其中默认输出提交者写入临时表并稍后将其重命名为S3中的重命名操作非常昂贵
我们也了解使用'DirectParquetOutputCommitter'的风险,这可能会导致数据损坏,并启用推测任务.
现在w/Spark 2.0这个类已被弃用,我们想知道我们在桌面上有什么选项,这样我们就不会在升级到Spark 2.0时承受大约4倍的写入速度.任何想法/建议/建议都将受到高度赞赏.
我们可以想到的一个解决方法是 - 保存在HDFS上,然后通过s3DistCp将其复制到S3(当我们的Hive元数据存储指向S3时,如何以理智的方式完成这些任何想法?)
看起来像NetFlix已经修复了这个 - [3],有什么想法他们何时计划开源呢?
谢谢.
[2] - https://www.appsflyer.com/blog/the-bleeding-edge-spark-parquet-and-s3/
[3] - https://www.youtube.com/watch?v=85sew9OFaYc&feature=youtu.be&t=8m39s http://www.slideshare.net/AmazonWebServices/bdt303-running-spark-and-presto-on-the -netflix -大数据平台