Вы можете проверить количество повторений, используя countByKey
на rdd, оно вернет defaultdict
.
Но вы сказали, что хотите получить результат как rdd
, так что вы можете использовать вместо него функцию reduceByKey
.
я создам rdd так же, как ваш
rd2=sc.parallelize([['A', 'B'], ['B', 'C'], ['A', 'B'],['B']])
rd2.map(lambda x: (tuple(x),1)).reduceByKey(lambda x,y: x+y).collect()
[(('B',), 1), (('A', 'B'), 2), (('B', 'C'), 1)]
теперь у вас есть выходной rdd в виде структуры (tuple,count)
, вы можете изменить его на список с помощью функции map
.
rd2.map(lambda x: (tuple(x),1)).reduceByKey(lambda x,y: x+y).map(lambda x: (list(x[0]),x[1])).collect()
[(['B'], 1), (['A', 'B'], 2), (['B', 'C'], 1)]
Надеюсь, это решит вашу проблему.