从 Spark RDD 中移除元素

Remove elements from Spark RDD

我正在从文本文件构建 RDD。有些行不符合我期望的格式,在这种情况下我使用标记 -1.

def myParser(line):
    try:
        # do something
    except:
        return (-1, -1), -1

lines = sc.textFile('path_to_file')
pairs = lines.map(myParser)

是否可以删除带有 -1 标记的行?如果没有,解决方法是什么?

我能想到的最干净的解决方案是使用 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))