在pyspark上实现从hdfs上读入停用词表文档。即将代码stopwords = ['的', '了', '是', '在', '我', '有', '和', '就', '不', '人', '都', '一', '一个', '上', '也', '而', \ '等', '到', '与', '自己', '可以', '没有', '这'] data = sc.wholeTextFiles('hdfs://spark01:9000/project/data/*/*') \ .map(lambda x: (x[0], ''.join(x[1].split()))) \ .map(lambda x: (x[0].split('/')[-2], x[1])) \ .map(lambda x: (x[0], [w for w in jieba.cut(x[1]) if w not in stopwords]))进行改写
时间: 2023-08-06 19:01:44 浏览: 89
停用词表stopwords
5星 · 资源好评率100%
可以使用以下代码实现:
```python
import jieba
from pyspark import SparkContext, SparkConf
# 初始化 Spark
conf = SparkConf().setAppName("Read Stopwords from HDFS").setMaster("local[*]")
sc = SparkContext(conf=conf)
# 从 HDFS 读取停用词表文档
stopwords_rdd = sc.textFile("hdfs://spark01:9000/project/stopwords.txt")
stopwords = stopwords_rdd.collect()
# 读取数据并进行分词和去除停用词
data = sc.wholeTextFiles("hdfs://spark01:9000/project/data/*/*") \
.map(lambda x: (x[0], ''.join(x[1].split()))) \
.map(lambda x: (x[0].split('/')[-2], x[1])) \
.map(lambda x: (x[0], [w for w in jieba.cut(x[1]) if w not in stopwords]))
# 输出结果
print(data.collect())
# 关闭 Spark
sc.stop()
```
其中,我们首先使用 `sc.textFile()` 函数从 HDFS 上读取停用词表文档,然后使用 `collect()` 函数将数据收集到 driver 端,并保存到 `stopwords` 变量中。
接着,我们使用 `sc.wholeTextFiles()` 函数从 HDFS 上读取数据,然后使用 `map()` 函数进行分词和去除停用词的处理,最后将处理后的结果保存到 `data` 变量中。
最后,我们使用 `collect()` 函数输出 `data` 变量中的结果,并使用 `sc.stop()` 函数关闭 Spark。
阅读全文