web-dev-qa-db-ja.com

Spark 2.0は 'DirectParquetOutputCommitter'を非推奨にします、それなしで生きる方法は?

最近、「EMRonHDFS」->「EMRonS3」(一貫したビューが有効になっているEMRFS)から移行し、S3へのSpark 'SaveAsTable'(寄木細工の形式)書き込みが〜 HDFSと比較して4倍遅いですが、DirectParquetOutputCommitter- [1] w/Spark 1.6を使用する回避策が見つかりました。

S3の速度が遅い理由-いわゆる寄木細工税を支払う必要がありました-[2]デフォルトの出力コミッターが一時テーブルに書き込み、後で名前を変更する場合、S3の名前変更操作は非常にコストがかかります

また、投機的タスクが有効になっているとデータが破損する可能性がある「DirectParquetOutputCommitter」を使用するリスクも理解しています。

現在、w/Spark 2.0このクラスは非推奨であり、アップグレード時に最大4倍遅い書き込みに耐えられないように、テーブルにどのようなオプションがあるのか​​疑問に思っています。 Spark 2.0。考え/提案/推奨事項をいただければ幸いです。

考えられる回避策の1つは、HDFSに保存してから、s3DistCpを介してS3にコピーすることです(HiveメタデータストアがS3を指しているので、これを適切な方法で行う方法についての考えはありますか?)

また、NetFlixがこれを修正したようです-[3]、いつオープンソース化する予定かについて何か考えはありますか?

ありがとう。

[1] - https://github.com/Apache/spark/blob/21d5ca128bf3afd5c2d4c7fcc56240e28443474f/sql/core/src/main/scala/org/Apache/spark/sql/execution/datasources/parquet/DirectParquetOutputCommitter。 scala

[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=8m39shttp://www.slideshare.net/AmazonWebServices/bdt303- running-spark-and-presto-on-the-netflix-big-data-platform

19
anivohra

使用できるもの:sparkContext.hadoopConfiguration.set("mapreduce.fileoutputcommitter.algorithm.version", "2")

eMRを使用しているので、s3を使用するだけです(s3aは必要ありません)

Spark 2.0を使用し、ParquetをS3にかなり高速に書き込んでいます(HDFSとほぼ同じ速度)

詳細を読みたい場合は、このjiraチケットをチェックしてください SPARK-1006

14
Tal Joffe

NetflixのS3コミッターはすでにオープンソースになっていると思います: https://github.com/rdblue/s3committer

0
viirya