2017-12-21 11 views
1

RDDではgroupByKeyの使用をお勧めしていませんでした。reduceByKey()やaggregateByKey()などの代替手段を使用することをお勧めしました。これらの方法はそれぞれのパーティションで最初に減らされ、groupByKeyデータの量はシャッフルされます。データセット/データフレームでgroupby()を使用しないでください。

今、データセット/データフレームにこれが適用されるのかどうかという疑問があります。触媒エンジンは多くの最適化を行っているので、触媒は自動的にそれが各区画で減少すべきであることを知っていることを知り、グループを実行すると考えていました。私は正しいですか?または、各パーティションの削減がgroupByより前に実行されるようにするための手順を実行する必要があります。

答えて

2

groupByは、データフレームとデータセットで使用する必要があります。あなたは思っていますが、Catalyst Optimizerはプランを構築し、GroupByの入口とあなたがしたい他の集計を最適化します。

このlinkのspark 1.4には、reduceByKeyとRDD、GroupByとDataFrameを比較した良い例があります。

そしてGROUPBYはあなたがintroduction of DataFrames

でDataBricksのoficialポストを見ることができる詳細は、すべての実行を最適化するので、あなたは、それが本当にRDDよりもはるかに高速である見ることができます
関連する問題