首頁 >資料庫 >mysql教程 >如何取得 Spark DataFrame 中每組的前 N ​​筆記錄?

如何取得 Spark DataFrame 中每組的前 N ​​筆記錄?

DDD
DDD原創
2024-12-23 11:46:36482瀏覽

How to Get the Top N Records for Each Group in a Spark DataFrame?

取得DataFrame中每個群組的TopN

在Spark DataFrame中,我們經常需要以某一列將資料分組並擷取頂部每組N 筆記錄。例如,您有一個包含使用者項目評分資料的 DataFrame,並且您希望找到每個使用者評分最高的項目。

Scala 解決方案

Scala該問題的解決方案涉及使用排名視窗函數。操作方法如下:

  1. 定義前 N價值:

  2. 建立一個視窗定義以依使用者對資料進行分區列並依其降序排列記錄rating:

  3. 使用rank函數將排名列加入DataFrame中:

  4. 過濾DataFrame以僅保留每個的前N 筆記錄group:

替代行號

如果不需要打破平局,可以使用row_number 函數的秩函數。這將為每個組中的每筆記錄提供唯一的行號:

然後,您可以使用與之前相同的條件過濾DataFrame 以僅保留每個組中的前N筆記錄。

以上是如何取得 Spark DataFrame 中每組的前 N ​​筆記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn