首页 > 解决方案 > 使用 pprint 函数打印前五个元素

问题描述

我正在尝试使用 pprint 函数打印前五个元素,但我无法让它工作。我尝试了以下代码,但它给了我一个错误。如何只打印前五个元素而不是前十个元素?

wordCounts = pairs.reduceByKey(lambda x, y: x + y)
wordCounts.pprint(:5)

标签: pythonapipyspark

解决方案


由于问题没有提供简单的数据,我想wordCounts变量是通过以下代码准备的。

import pprint
from pyspark.context import SparkContext
sc = SparkContext('local', 'test')
pairs = sc.parallelize([("a", 1), ("b", 1), ("b", 1), ("b", 1), ("b", 1), ("b", 1), ("d", 1), ("e", 1), ("a", 1), ("f", 1), ("c", 1)])
wordCounts = pairs.reduceByKey(lambda x, y: x + y)

您可以通过以下任一方式打印 wordCounts 中的值:

print(wordCounts.collect()[:5]) #Pick 5 elements
print(wordCounts.take(5)) #Pick 5 elements
print(sorted(wordCounts.collect())[:5]) #Sort the tuples, and pick the first 5 elements
print(sorted(wordCounts.collect(), key=lambda x: x[1], reverse=False)[:5]) #Sort by the second entry (i.e. count) in ascending order, and pick the first 5 elements

产生

[('a', 2), ('b', 5), ('d', 1), ('e', 1), ('f', 1)]
[('a', 2), ('b', 5), ('d', 1), ('e', 1), ('f', 1)]
[('a', 2), ('b', 5), ('c', 1), ('d', 1), ('e', 1)]
[('d', 1), ('e', 1), ('f', 1), ('c', 1), ('a', 2)]

强烈建议您下次提供一个可重现的最小示例。


推荐阅读