ホームページ >データベース >mysql チュートリアル >Spark DataFrame でグループ化された上位 N 集計を効率的に実行するにはどうすればよいですか?
Spark DataFrame を使用してグループ化された TopN 集計を実行する方法
Spark SQL では、SQL に似た構文を利用して複雑なデータ操作を実行できます。一般的なタスクの 1 つは、データをグループ化し、各グループから上位 N 個の値を取得することです。 Spark DataFrame を使用してこれを実現する方法は次のとおりです:
特定の列でデータをグループ化するには、GROUP BY 句で列名を指定します:
<br>df。 groupBy("user")<br>
それぞれの中で結果を並べ替えるにはグループの場合は、orderBy 関数を使用できます:
<br>df.groupBy("user").orderBy(desc("評価"))<br>
これにより、各ユーザー グループの評価列の降順にデータが並べ替えられます。
各グループの上位 N 件のレコードについては、制限関数を使用できます:
<br>df.groupBy("user").orderBy(desc("評価")).limit(n) <br>
n は、必要な上位レコードの数です。または、ウィンドウ関数を使用して各グループ内のレコードをランク付けし、そのランクに基づいてフィルタリングすることもできます:
</p>import org.apache.spark。 sql.expressions.Window<p>import org.apache.spark.sql.functions.{rank, desc}<br><br>// ウィンドウ定義</p>val w = Window.partitionBy($"user").orderBy(desc("評価"))<p><br>// フィルター</p>df .withColumn("ランク", ランク.over(w)).where($"ランク" <= n)<p>
以上がSpark DataFrame でグループ化された上位 N 集計を効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。