Sparkを使用してパフォーマンスが低下しています。Spark 1.5.2でgroupby操作を改善しました
私は2つの具体的な質問を持っている:私たちは、いくつかは非常に仕上げ、RDDで行わGROUPBY操作のいくつかは、より多くの時間を取っている。また
- すばやくいくつかの時間がかかります
ここにはのスクリーンショットがあります。
現在、ローカルで実行され、シャッフルパーティションが2に設定され、パーティション数が5に設定されていると、データは約100,000レコードになります。
groupby操作といえば、2つの列に基づいてデータフレーム(いくつかの結合の結果)をグループ化してから、結果を得るために関数を適用します。
val groupedRows = rows.rdd.groupBy(row => (
row.getAs[Long](Column1),
row.getAs[Int](Column2)
))
val rdd = groupedRows.values.map(Criteria)
ここで、Criteriaはグループ化された結果の行に作用する関数です。このグループをどのようにして最適化できますか?
のスクリーンショットです。
私はSpark 1.5.2の 'agg'操作が関数を取り込むとは考えていません。組み込みの' sum'、 'avg'などの関数を取り込むだけです。基準は、グループの各レコードを実行してレコードを選択するものです。 グループ分け後、 'RDD [((Long、Int)、Iterable [Row])]'を取得し、各キー(キー、キー)に対してseqの行を取得します。これを基準にします。 –
udaf集約を見てください。 UDAFが適切な解決策であるようです –