apache-spark - 从 spark RDD 中删除空字符串

我有一个 RDD,我像这样标记它来给我标记列表

data = sqlContext.read.load('file.csv', format='com.databricks.spark.csv', header='true', inferSchema='true')
data = data.rdd.map(lambda x: x.desc)
stopwords = set(sc.textFile('stopwords.txt').collect())

tokens = data.map( lambda document: document.strip().lower()).map( lambda document: re.split("[\s;,#]", document)).map( lambda word: [str(w) for w in word if not w in stopwords])

>>> print tokens.take(5)
[['35', 'year', 'wild', 'elephant', 'named', 'sidda', 'villagers', 'manchinabele', 'dam', 'outskirts', 'bengaluru', '', 'cared', 'wildlife', 'activists', 'suffered', 'fracture', 'developed', 'mu'], ['tamil', 'nadu', 'vivasayigal', 'sangam', 'reiterates', 'demand', 'declaring', 'tamil', 'nadu', 'drought', 'hit', 'sanction', 'compensation', 'affected', 'farmers'], ['triggers', 'rumours', 'income', 'tax', 'raids', 'quarries'], ['', 'president', 'barack', 'obama', 'ordered', 'intelligence', 'agencies', 'review', 'cyber', 'attacks', 'foreign', 'intervention', '2016', 'election', 'deliver', 'report', 'leaves', 'office', 'january', '20', '', '2017'], ['death', 'note', 'driver', '', 'bheema', 'nayak', '', 'special', 'land', 'acquisition', 'officer', '', 'alleging', 'laundered', 'mining', 'baron', 'janardhan', 'reddys', 'currency', 'commission', '']]

很少''列表中我无法删除的项目。我怎样才能删除它们

这不起作用
tokens = tokens.filter(lambda lst: filter(None, lst))

最佳答案

这应该工作

tokens = tokens.map(lambda lst: filter(None, lst))
filter需要一个返回 bool 值的方法。在您的情况下,您有一个返回列表的方法。

https://stackoverflow.com/questions/41289634/

相关文章:

scala - 如何递归获取 Scala map 中包含的每个列表的最后一个元素?

elixir - 编译 riak_core 项目时,Mix 在 deps.compile 上挂起

android - 安装失败 INSTALL_PARSE_FAILED_MANIFEST_MALFO

numpy - 什么是 numpy pypi 包命名约定

php - 通过 Composer 只安装单个包而不更新其他包

angularjs - 运行功能和位置路径问题

performance - numpy数组子维度上的python操作

security - Webpack 样式加载器 appendChild 对 CSP 不友好

spring - 如何设置 Google Cloud 以使用 AngularJS 客户端和 Java

r - 如何在 R 中获取面板数据固定效应回归的 corr(u_i, Xb)