取得DataFrame中每個群組的TopN
在Spark DataFrame中,我們經常需要以某一列將資料分組並擷取頂部每組N 筆記錄。例如,您有一個包含使用者項目評分資料的 DataFrame,並且您希望找到每個使用者評分最高的項目。
Scala 解決方案
Scala該問題的解決方案涉及使用排名視窗函數。操作方法如下:
定義前 N價值:
建立一個視窗定義以依使用者對資料進行分區列並依其降序排列記錄rating:
使用rank函數將排名列加入DataFrame中:
過濾DataFrame以僅保留每個的前N 筆記錄group:
替代行號
如果不需要打破平局,可以使用row_number 函數的秩函數。這將為每個組中的每筆記錄提供唯一的行號:
然後,您可以使用與之前相同的條件過濾DataFrame 以僅保留每個組中的前N筆記錄。
以上是如何取得 Spark DataFrame 中每組的前 N 筆記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!