Я создаю инвертированный индекс документов, в котором выходные данные должны содержать слово (из текстовых файлов), за которым следуют все файлы, в которых оно появилось, а также количество вхождений в каждом файле. Что-то вроде
word1: doc1.txt: # вхождений в doc1, doc2.txt: # вхождений в doc2, doc3 ...
word2: doc1.txt: # вхождений в doc1, doc2.txt: # вхождений в doc2, doc3 ...
Я могу вывести слова и документы, в которых они содержатся, но у меня проблемы с подсчетом экземпляров каждого слова в каждом документе.
Код:
from pyspark import SparkConf, SparkContext
sc = SparkContext("local", "app")
text=sc.wholeTextFiles('/folder')
output = text.flatMap(lambda (file,contents):[(file, word) for word in contents.lower().split()])\
.map(lambda word: (word, 1))\
.map(lambda (file, word): (word,[file]))\
.reduceByKey(lambda a,b: a+b)