reduceByKey and lambda

3

我正在学习过程中阅读现有的Spark代码,我遇到了以下代码:

enPages.map(lambda x: x.split(" "))\
        .map(lambda x: (x[2], int(x[3])))\
        .reduceByKey(lambda x, y: x + y, 40)\
        .collect()

我对reduceByKey和lambda的工作原理有基本的了解,但是在上面的代码中,我不理解reduceByKey/lambda函数中的'40'的用途。如果能有任何澄清就好了。

谢谢,Sasi。

PS:我尝试删除'40'并比较输出,只发现键/值对的顺序已经改变,但对于给定的键,值的计数在最终输出中是相同的。

1个回答

4
这是关于在reduceByKey中可以执行的重新分区操作。 根据Apache Spark文档(此处)所述。
函数:
.reduceByKey(lambda x, y: x + y, 40)

这段代码在做什么呢?你正在运行lambda代码,将累加器x与值y相加。40是将创建的分区数,用于处理此执行过程。如果您想创建新的分区数而无需进行额外的混洗,则这非常有用。

1
感谢您的澄清,Thiago! - Sasi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接