从Spark RDD中移除元素

2024-04-29 14:55:30 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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


Tags: 标记myparserreturndef格式line情况do
1条回答
网友
1楼 · 发布于 2024-04-29 14:55:30

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

相关问题 更多 >