2017-09-17 10 views
1

DirectFileOutputCommitterは、Spark 2.2.0では使用できなくなりました。つまり、S3への書き込みには非常に長い時間がかかります(3時間対2分)。私はこれを行うことにより、火花シェル2にFileOutputCommitterバージョンを設定することにより、この問題を回避することができるよ、同じSpark 2.2.0 FileOutputCommitter

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

は、上記のコマンドがあると思われる火花-SQL

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

では動作しません。バージョン= 2を設定しますが、クエリが実行されたときにはまだバージョン1の動作が表示されます。

二つの質問、

1)どのように私は火花-SQLを使用したFileOutputCommitterバージョン2の挙動を得るのですか?

2)Spark 2.2.0でDirectFileOutputCommitterを使用できる方法はありますか?私はこの問題を打ってきた

Spark 1.6 DirectFileOutputCommitter

答えて

4

関連項目[Iは、失われたデータの非ゼロのチャンスで大丈夫ですよ]。 Sparkは、DirectFileOutputCommitterの使用を推奨していないため、競合状況の場合にデータが失われる可能性があります。アルゴリズムバージョン2はあまり役に立ちません。

gzipを使用してs3でデータを保存しようとしましたが、これはいくつかの利点をもたらしました。

実際の問題は、sp3が最初にs3:/// _ temporary/0に書き込んでから、一時的なデータを出力にコピーすることです。このプロセスはs3ではかなり遅いです(一般的に6MBPS)。大量のデータを取得した場合、かなりの速度低下があります。

代わりにHDFSに書き込んだ後、distcp/s3distcpを使用してs3にデータをコピーします。

また、netflixが提供する解決策を見つけることができます:https://github.com/rdblue/s3committer。私はそれを評価していない。

関連する問題