spark - 列出列表

时间:2016-02-09 00:02:48

标签: python apache-spark pyspark

pyspark新手 - 我有一堆文本文档,我想从这些文本文档中获取所有单词。

我可以看到这一步将每个文档转换为单词列表: words = documents.map(lambda v: re.split('[\W_\']+',v.lower())) display(words.toDF())

但是我也希望从中删除停用词(在此代码之前某处定义的单词列表)。问题是RDD"字"并不仅仅是一个单词列表。它是单词列表的列表。 例如,words.first()将返回单词列表,而不仅仅是一个单词。那么如何从"单词"?

中删除属于停用词的任何单词

我尝试words2 = words.map(lambda x:x if x not in stoplist)并收到错误" org.apache.spark.SparkException:由于阶段失败导致作业中止:"

1 个答案:

答案 0 :(得分:2)

例如如下:

pattern = re.compile('[\W_\']+')

(documents
    .flatMap(lambda v: pattern.split(v.lower()))
    .filter(lambda w: w and w not in stoplist))

或者如果你想保留记录而不展平:

(documents
    .map(lambda v: pattern.split(v.lower()))
    .map(lambda ws: [w for w in ws if w and w not in stoplist]))