最近、「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]、いつオープンソース化する予定かについて何か考えはありますか?
ありがとう。
[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
使用できるもの:sparkContext.hadoopConfiguration.set("mapreduce.fileoutputcommitter.algorithm.version", "2")
eMRを使用しているので、s3を使用するだけです(s3aは必要ありません)
Spark 2.0を使用し、ParquetをS3にかなり高速に書き込んでいます(HDFSとほぼ同じ速度)
詳細を読みたい場合は、このjiraチケットをチェックしてください SPARK-1006
NetflixのS3コミッターはすでにオープンソースになっていると思います: https://github.com/rdblue/s3committer 。