我的要求是从数据框中获取前 N 个项目。
我有这个数据框:
val df = List(
("MA", "USA"),
("MA", "USA"),
("OH", "USA"),
("OH", "USA"),
("OH", "USA"),
("OH", "USA"),
("NY", "USA"),
("NY", "USA"),
("NY", "USA"),
("NY", "USA"),
("NY", "USA"),
("NY", "USA"),
("CT", "USA"),
("CT", "USA"),
("CT", "USA"),
("CT", "USA"),
("CT", "USA")).toDF("value", "country")
我能够将它映射到RDD[((Int, String), Long)]
列值计数:
读取:((colIdx,值),计数)
((0,CT),5)
((0,MA),2)
((0,OH),4)
((0,NY),6)
((1,USA),17)
现在我需要获取每个列索引的前 2 项。所以我的预期输出是这样的:
RDD[((Int, String), Long)]
((0,CT),5)
((0,NY),6)
((1,USA),17)
我尝试在 DataFrame 中使用 freqItems api,但速度很慢。
欢迎任何建议。