Python Spark流媒体获取n个最大密钥

Python Spark流媒体获取n个最大密钥,python,apache-spark,spark-streaming,Python,Apache Spark,Spark Streaming,我正在用Spark Streaming做一个简单的字数统计。如何获取n个最常用的单词,或者换句话说,获取具有最高值的前n个键 以下是我目前的代码: counts = lines.flatMap(lambda line: line.split(" ")) \ .map(lambda word: (word, 1)) \ .reduceByKeyAndWindow(lambda a, b: a+b, lambda a, b: a-b, 30, 2) output = counts.map(lamb

我正在用Spark Streaming做一个简单的字数统计。如何获取n个最常用的单词,或者换句话说,获取具有最高值的前n个键

以下是我目前的代码:

counts = lines.flatMap(lambda line: line.split(" ")) \
.map(lambda word: (word, 1)) \
.reduceByKeyAndWindow(lambda a, b: a+b, lambda a, b: a-b, 30, 2)

output = counts.map(lambda (a, b):(b, a)).transform(lambda rdd: rdd.sortByKey(ascending=False)).map(lambda (a, b):(b, a))

它已经按降序排列了列表,现在我只需要取前n个元素。有一些例子说明了如何在Scala中实现这一点,Scala使用rdd.take()然后根据list.contains过滤rdd。但是Python没有list.contains。

您可以始终使用
Python
来浏览
列表。似乎您还没有对python进行过太多的探索。在
Python
中,可以执行
List
操作

If value in Mylist:
#Do your action
如果要从
列表中获取N个元素编号

list[:10]
将使用切片为您提供此列表的前10个元素

请仔细看看这个答案