2016-03-15 92 views
0

這裏的數據幀:如何刪除每個組的記錄數低於閾值?

id | sector  | balance 
--------------------------- 
1 | restaurant | 20000 
2 | restaurant | 20000 
3 | auto  | 10000 
4 | auto  | 10000 
5 | auto  | 10000 

如何找到每個sector類型的計數和下面具體LIMITsector型計數刪除記錄?

以下:

dataFrame.groupBy(columnName).count() 

給了我一個值出現在該欄中的次數。

如何使用DataFrame API在Spark和Scala中執行此操作?

回答

0

不知道這是否是最好的方式。但這對我有效。

def getRecordsWithColumnFrequnecyLessThanLimit(columnName: String,limit :Integer): DataFrame ={ 
    val g=dataFrame.groupBy(columnName).count().filter("count<"+limit).select(columnName).rdd.map(r => r(0)).collect() 
    dataFrame.filter(dataFrame(columnName) isin (g:_*)) 
} 
0

因爲它是一個數據框,您可以使用SQL查詢像

select sector, count(1) 
from TABLE 
group by sector 
having count(1) >= LIMIT 
相關問題