我想在每个分区中找到最大的密钥(也是最后一个密钥),并且每个分区中可能有两个或最大的密钥(彼此相等)。
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迭代器。很难直接获得最后两个或那些项目。
有人可以告诉我如何解决这个问题吗?
答案 0 :(得分:0)
您提供的功能,将在每个执行程序的分区级别执行。因此,您可以在该方法中拥有最大的键逻辑,并将结果存储在数组类型的广播变量中,因为每个分区可能有多个值。您可以参考理论here