2016-08-18 7 views
2

私はS3の位置が定義された外部ハイブテーブルが平行でないPyspark書き込みが

LOCATION 's3n://bucket/path/' 

の束を集約pysparkジョブの終了時に、このテーブルに書き込みますデータは1つのエグゼキュータ/コンテナのみが書き込みに使用されているため、Hiveへの書き込みは非常に遅いです。 HDFSバックアップテーブルに書き込むとき、書き込みは並行して実行され、大幅に高速化されます。

s3aパスを使用してテーブルを定義しようとしましたが、曖昧なエラーのためにジョブが失敗します。

これはAmazon EMR 5.0(hadoop 2.7)のpyspark 2.0ですが、以前のバージョンのEMR/sparkで同じ問題が発生しました。

この書き込みをより効率的にするために使用できる設定ライブラリまたは代替ライブラリはありますか?

答えて

2

私はあなたが寄木細工を使用していると思います。潜在的なデータ損失の問題を避けるためにDirectParquetOutputCommitterhas been removedchangeは実際には04/2016に入っていました。

S3への書き込みは、まず_temporaryフォルダに保存され、最終的な場所に移動されたデータを意味します。残念ながら、S3で "移動する" == "コピー&が削除されています。それを悪化させるために、この最後の「動く」はドライバーによってのみ行われます。

ローカルHDFSに書き込んだ後、そのクラスを追加するために戦いたくない場合は、データをコピーしてください(私はこれをお勧めします)。 HDFSでは "移動"〜 "名前を変える"ので時間がかかりません。

+0

私は間違いなく同じ方法に行きます。 S3へのコピーよりもEMR/HDFSで書き込むほうがはるかに安いです。 – eliasah

+0

Orcファイル形式を使用した場合と同じエクスペリエンス –

+0

少なくともこれはhdfsへの書き込みとs3への移行のアプローチのいくつかの確認ですが、応答に感謝します。 –