python-理解PySpark Reduce()


0

我正在用PySpark学习Spark,并尝试使用函数reduce()的不同人员来正确理解它,但是我做了一些事情,得到了一个对我来说毫无意义的结果。

我以前用reduce执行的示例是一些基本的东西,比如:

>>> a = sc.parallelize(['a','b','c','d'])
>>> a.reduce(lambda x,y:x+y)
'abcd'

>>> a = sc.parallelize([1,2,3,4])
>>> a.reduce(lambda x,y:x+y)
10

>>> a = sc.parallelize(['azul','verde','azul','rojo','amarillo'])
>>> aV2 = a.map(lambda x:(x,1))
>>> aRes = aV2.reduceByKey(lambda x,y: x+y)
>>> aRes.collect()
[('rojo', 1), ('azul', 2), ('verde', 1), ('amarillo', 1)]

但我试过了:

>>> a = sc.parallelize(['a','b','c','d'])
>>> a.reduce(lambda x,y:x+x)
'aaaaaaaa'

结果我期待着“aaaa”,但没有“a aaaa a”

我正在阅读reduce()文档,寻找答案,但我想我遗漏了一些东西。

谢谢!

1 答案


0

lambda函数中的x不断变化,因此每个步骤中最后一个表达式的x是

a
aa 
aaaa

最后的结果是aaaaaaaa。你的表情应该是原来的两倍。


我来回答

写文章

提问题

面试题