Spark(Scala)でデータを単純にグループ化する必要があります。特に、これは私の最初のデータである。Sparkでデータを効率的にグループ化する
1, a, X
1, b, Y
2, a, Y
1, a, Y
val seqs = Seq((1, "a", "X"),(1, "b", "Y"),(2, "a", "Y"),(1, "a", "Y"))
次のように私は最初のキーによってグループにそれを必要とする:
1, (a, X), (b, Y), (a, Y)
2, (a, Y)
は私の最初のIDIAはDataFrame
とgroupBy
を使用していたが、私はこのことを読みます操作は非常に高価であり、すべてのデータを完全に再シャッフルする必要があります。
したがって、グループ化を実行するためのより安価なオプションは何ですか?具体的な例が分かるだろう。
しかしグループbyはまさにあなたが望むもので、並列処理はsparkの強みなので、groupByをRDDまたはDataframeにすることができます。もう一つの方法はReduceをはるかに効率的にすることですが、問題は最後にグループごとに1つのキー値のペアが残っていることです。 – GameOfThrows
シャッフルせずにパーティション間で物事をグループ化することはできません。アイテムがどこに行く必要があるか考えてみてください。それは必然的に高価なので高価です。 –