[英]Spark Dataframe Group By Operation and Picking N values from each group
我有以下結構的spark數據框:
Operation|RequestURL|RequestBody|IsGetRequest|IsPostRequest
和一個變量: val n = 100
我想在數據框中的“ Operation
列上執行“ Group-by
依據”。 然后,我想為每個組中的n
請求(無順序)獲取RequestURL
和RequestBody
列(為此創建一個新的data-frame/rdd/map
)。 如果一個組的請求數少於n,則我想復制該組中的某些行,以確保我從每個組獲取的請求數相同。
需要幫助以最佳方式弄清楚如何做到這一點。 我願意使用任何語言( python/scala
),並且也可以將數據框轉換為pandas或鍵和值的哈希映射,如果不可能使用spark data-frame
來完成的話。
我已經看到了一些使用分組和排序的堆棧溢出解決方案,然后使用Windows分區功能來獲取topN
值。 我的問題有何不同-就我而言,沒有ordering
。 另外,我想確保從每個組中fetching equal number of requests
。
使用Windows分區功能解決了。 隨后,使用groupBy()和toMap函數將結果數據集轉換為[String,List(Strings)]的地圖,遍歷地圖並使用列表操作復制行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.