我的要求是从数据框中获取前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)]
中
colValCount:
读取: ((colIdx, value), count)
((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,但是速度很慢。
欢迎您提出任何建议。
sort()
和limit()
的组合,但老实说我不明白你如何得到你的输出。 - pault