【发布时间】:2018-02-13 20:28:12
【问题描述】:
我的要求是从数据框中获取前 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()的某种组合,但我不明白您是如何获得输出的。
标签: scala apache-spark top-n