【发布时间】:2018-12-06 16:08:26
【问题描述】:
我正在尝试在使用 Spark 时计算 Hadoop 集群中的几个文本文件中的单词。我设法得到字数,但我还想做一些进一步的修改,例如忽略数字或将所有单词转换为小写。我无法正常迭代 RDD 数据。我试过使用 collect() 但 map 函数不接受 list 作为参数。我还尝试将正则表达式逻辑直接应用于 RDD 的“过滤器”功能,但没有成功。这是我到目前为止提出的代码,它可以在没有我注释掉的部分的情况下工作。
from pyspark import SparkConf, SparkContext
import re
conf = SparkConf().setAppName("Word count")
sc = SparkContext(conf=conf)
sc.setLogLevel("WARN")
text = sc.textFile("/data/book/*.txt") \
.flatMap(lambda line: line.split())
#handledText = text.map(lambda s: s.replace("\d", "", text))
counts = text.map(lambda word: (word, 1)) \
.groupByKey() \
.map(lambda p: (p[0], sum(p[1])))
res = counts.takeOrdered(text.count(), key=lambda p: -p[1])
print(res)
【问题讨论】:
标签: python apache-spark pyspark