私は次の操作を実行する必要のある多くのスパークデータフレームを持っている:sparkデータフレームで強制的に再パーティション化するには?
今1) load a single spark dataframe
2) select rows from it
3) merge it with all of the previous spark dataframes
、上記の操作のそれぞれが異なるのnumberOfパーティションが必要です。行を選択するには、100個のパーティションのような多くのパーティションが必要です。マージには、10パーティションのような非常に少ないパーティションが必要です。
だから、私は本当にそれがこのように仕事をしたい:今すぐ
1) load a single spark dataframe
1.5) repartition into 100 partitions
2) select rows from it
2.5) repartition into 10 partitions
3) merge it with all of the previous spark dataframes
、どのように私は、ステップ1と2と2と3の間での間にパーティションを再作成し、これを強制するのですか?
私はdata = data.repartition(7)
と呼んだとき、遅延評価されているので、実際に保存しているときにのみ再パーティション化することがわかります。
だから、私はこのようにそれをやっている:
1) load a single spark dataframe
1.5) repartition into 100 partitions
1.75) `df.count()` *just* to force materialization
2) select rows from it
2.5) repartition into 10 partitions
2.75) `df.count()` *just* to force materialization
3) merge it with all of the previous spark dataframes
はここの間にパーティションを再作成するためにそれを強制するためのより良い方法はありますか?データフレームでcount()
を実行するよりも良い方法はありますか?
しかし、私は実際にそれが何を出力しても気にしないとき、 'first()'のような無駄な操作を避ける方法はありますか?私はそれを再分割したいだけですが、実際に何が出力されるかは気にしません。それを避ける方法はありますか? – Sother
残念ながら、すべての変換を適用するためにデータフレームに対してアクションを実行する必要があるため、現在のところ、それを避ける方法はありません。答えにいくつかの情報を追加しました。 – Shaido
@Sother答えを更新しました。 – Shaido