我可以在RDD的每个分区中使用groupByKey吗?或者如何找到每个分区的最大密钥?

时间:2016-12-05 02:05:30

标签: python apache-spark pyspark spark-streaming

我想在每个分区中找到最大的密钥(也是最后一个密钥),并且每个分区中可能有两个或最大的密钥(彼此相等)。

DStream.map(lambda x: (x,1)).transform(lambda rdd: rdd
.mapPartitions(lambda x: groupByKey(x))).pprint()

和spark告诉我:

NameError: global name 'groupByKey' is not defined

所以,我尝试自己编写一个函数,我发现我从map partitions()得到的实体是一个Python迭代器。很难直接获得最后两个或那些项目。

有人可以告诉我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您提供的功能,将在每个执行程序的分区级别执行。因此,您可以在该方法中拥有最大的键逻辑,并将结果存储在数组类型的广播变量中,因为每个分区可能有多个值。您可以参考理论here