【问题标题】:spark -- filter down element in a list of listspark -- 过滤列表中的元素
【发布时间】:2016-02-10 00:54:55
【问题描述】:

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

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

但我也想从中删除停用词(在此代码之前某处定义的单词列表)。问题是RDD“单词”似乎不仅仅是单词列表。它是单词列表的列表。 例如,words.first() 将返回一个单词列表,而不仅仅是一个单词。那么如何从“words”中删除任何属于停用词的单词呢?

我尝试words2 = words.map(lambda x:x if x not in stoplist) 并得到错误“org.apache.spark.SparkException: Job aborted due to stage failure:”

【问题讨论】:

    标签: python apache-spark pyspark


    【解决方案1】:

    例如如下:

    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]))
    

    【讨论】:

      猜你喜欢
      • 2016-02-22
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多