2017-09-15 5 views
1
df.write.partitionBy("par").format("orc").saveAsTable("mytable") 

みなさんこんにちは、私はパーティションハイブテーブルとしてスパークデータフレームを保存するとき、プロセスは非常に非常に遅いです、誰もがなぜ知っているのですか?チューニングする必要があるパラメータはありますか?スパークデータフレーム

+0

'df.repartition( "パー")してみてくださいwrite.partitionBy( "パー")フォーマット( "ORC")saveAsTable(。。。 "mytable") ' –

+0

テーブルを書く実際のプロセスは遅いのですか?テーブルを書くとき、以前のすべての変換が最初に適用されるので(怠惰なので)。だから、あなたが見ているのは、文章だけでなく、全体のピプリンの時間かもしれません。 –

+0

私は試してみるつもりですが、まず、なぜdf.repartition( "par")操作がうまくいくのですか?あなたはそれを説明できますか? –

答えて

1

データフレームパーティションがハイブパーティションと「整列」していないことが問題だと思います。これにより、ハイブパーティションごとに多数の小さなファイルが作成されます。これは、データ・データ・フレームの各パーティションにハイブ・パーティション用のデータが含まれているためです。

最初の同じ列にデータフレームを再パーティションしよう:

df.repartition("par").write.partitionBy("par").format("orc")‌​.saveAsTable("mytabl‌​e") 
+0

b.rdd.getNumPartitions()= 1 b.repartition( "par")。rdd.getNumPartitions()= 200パーティションはなく、パーティション番号は1であり、反復操作では200である。パーティションの数が理由になることがありますか? –

関連する問題