Как сохранить каждый элемент в словаре и посчитать значение словаря с помощью pyspark? - PullRequest
0 голосов
/ 07 сентября 2018

Я хочу посчитать значение элементов словаря. Я пытаюсь с этим кодом:

def f_items(data, steps=0):

     items = defaultdict(int)    
     for element in data:
         if element in data:
             items[element] += 1
         else:
             items[element] = 1
     return items.items()

data = [[1, 2, 3, 'E'], [1, 2, 3, 'E'], [5, 2, 7, 112, 'A'] ] 
rdd = sc.parallelize(data)
items = rdd.flatMap(lambda data: [y for y in f_items(data)], True)
print (items.collect())

Вывод этого кода показан ниже:

[(1, 1), (2, 1), (3, 1), ('E', 1), (1, 1), (2, 1), (3, 1), ('E', 1), (5, 1), (2, 1), (7, 1), (112, 1), ('A', 1)]

Но, он должен показать следующий результат:

[(1, 2), (2, 3), (3, 3), ('E', 2), (5, 1), (7, 1), (112, 1), ('A', 1)]

Как этого добиться?

1 Ответ

0 голосов
/ 07 сентября 2018

Ваш последний шаг должен быть вызовом функции limitByKey для элементов rdd.

final_items = items.reduceByKey(lambda x,y: x+y)
print (final_items.collect())

Вы можете просмотреть эту ссылку , чтобы увидеть некоторые примеры reduByKey в scala, java и python.

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