Подсчитайте количество слов каждого алфавита в текстовом файле, используя pyspark - PullRequest
0 голосов
/ 19 ноября 2018

Я только что начал с pySpark, и я пытаюсь найти количество слов для каждого алфавита из текстового файла. Я рассматриваю только неуникальные ценности. Я мог найти количество каждого слова, но не мог идти дальше.

data = sc.textFile("file.txt")
words = data.flatMap(lambda l : re.split(r'[^A-Za-z\t]+', l))
pairs = words.map(lambda w : (w, 1))
counts = pairs.reduceByKey(lambda n1, n2 : n1+n2)
print(counts.top(10))

Это дает вывод как [('zwagger', 1), ('zounds', 2), ('zone', 1), ('zodiacs', 1), ('zodiac', 1), ('zo', 1), ('zir', 2), ('zipped', 1), ('zip', 1), ('zephyrs', 1)]

Но я ищу количество слов для каждого алфавита. Я пытался использовать цикл for, но получаю ошибку TypeError: 'PipelinedRDD' object is not iterable. Я пытался применить groupBy

grouped = counts.groupBy(lambda x : x[0][0])
print(grouped.top(10))

но это бросает IndexError: string index out of range, что странно. Я не уверен, что делать дальше.

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