Понимание PySpark Reduce () - PullRequest
       27

Понимание PySpark Reduce ()

0 голосов
/ 12 марта 2020

Я изучаю Spark с помощью PySpark, и я пытаюсь использовать другой персонал с функцией redu (), чтобы правильно его понять, но я кое-что сделал и получил результат, который не имеет смысла для меня.

предыдущие примеры, которые я выполнял с помощью Reduce, основывались на c таких вещах, как:

>>> 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' в результате, но не ' aaaaaaaa '

Я искал ответы, читая документацию Reduce (), но думаю, что что-то упустил.

Спасибо!

1 Ответ

0 голосов
/ 12 марта 2020

Ваша функция x in lambda постоянно меняется, поэтому x последнего выражения на каждом шаге равно

a
aa 
aaaa

, что дает последний результат aaaaaaaa. Количество символов должно быть удвоено с вашим выражением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...