私は約21億レコードのデータセットを持っていると言います。pyspark Window.partitionBy vs groupBy
これは顧客情報を持つデータセットであり、何回何回何回行ったのか知りたいと思っています。だから私はIDをグループ化し、1つの列を合計する必要があります(1はアクションを示す0と1の値を持ちます)。
今、私は単純なgroupBy
とagg(sum)
を使用することができますが、これは私の理解には本当に効率的ではありません。 groupBy
は、パーティション間で大量のデータを移動します。
また、partitionBy
句のWindow関数を使用してデータを合計することもできます。欠点の1つは、すべてのデータを保持するために余分なフィルタを適用する必要があることです。 IDごとに1つのレコードが必要です。
しかし、私はこのウィンドウがどのようにデータを処理するか分かりません。それはこのグループよりも優れていますか?それとも同じですか?