使用pyspark计算文本文件中每个字母的单词数

时间:2018-11-19 09:40:08

标签: python apache-spark pyspark

我刚开始使用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,这很奇怪。我不确定如何进行此操作。

0 个答案:

没有答案