Учитывая
data = sc.parallelize([(1,'winter is coming'),(2,'ours is the fury'),(3,'the old the true the brave')])
Мой желаемый вывод -
[('fury',[2],('true',[3]),('is',[1,2]),('old',[3]),('the',[2,3]),('ours',[2]),('brave',[3]),('winter',[1]),('coming',[1])]
Я не уверен, как отобразить следующий вывод
[(1,'winter'),(1,'is'),(1,'coming'),(2,'ours'),(2,'is'),....etc.]`
Я пытался использовать
data.flatMap(lambda x: [(x[0], v) for v in x[1]]
, но это закончилось тем, что ключ соответствовал каждой букве строки вместо слова. Если здесь используется функция flatMap, map или split ?
После сопоставления я планирую сократить парные RDD с аналогичными ключами и обратным ключом и значением, используя
data.reduceByKey(lambda a,b: a+b).map(lambda x:(x[1],x[0])).collect()
Правильно ли мое мышление?