从 Spark RDD 中删除元素
Posted
技术标签:
【中文标题】从 Spark RDD 中删除元素【英文标题】:Remove elements from Spark RDD 【发布时间】:2015-12-04 14:31:02 【问题描述】:我正在从一个文本文件构建一个 RDD。有些行不符合我期望的格式,在这种情况下我使用标记 -1。
def myParser(line):
try:
# do something
except:
return (-1, -1), -1
lines = sc.textFile('path_to_file')
pairs = lines.map(myParser)
是否可以删除带有-1
标记的行?如果没有,解决方法是什么?
【问题讨论】:
只使用filter
...不是吗?
在 Java 中我使用了一个过滤器: .filter(new Function我能想到的最干净的解决方案是使用flatMap
丢弃格式错误的行:
def myParser(line):
try:
# do something
return [result] # where result is the value you want to return
except:
return []
sc.textFile('path_to_file').flatMap(myParser)
另见What is the equivalent to scala.util.Try in pyspark?
你也可以在map
之后过滤:
pairs = lines.map(myParser).filter(lambda x: x != ((-1, -1), -1))
【讨论】:
以上是关于从 Spark RDD 中删除元素的主要内容,如果未能解决你的问题,请参考以下文章
如何删除元素如何根据另一个rdd从一个rdd中删除元素并在pyspark中创建新的rdd?