Exception handling 在Spark中处理映射函数中的坏项

Exception handling 在Spark中处理映射函数中的坏项,exception-handling,apache-spark,pyspark,Exception Handling,Apache Spark,Pyspark,在Spark中处理映射函数异常的优雅方法是什么 例如: exampleRDD= ["1","4","7","2","err",3] exampleRDD=exampleRDD.map(lambda x: int(x)) 这将不起作用,因为它将在“err”项上失败 我怎样才能过滤出有缺陷的行并在其余行上执行map,而不必预料到在每一行中会遇到什么样的错误 我们可以做一些类似于定义函数的事情: def stringtoint(x): try: a=int(x) ex

在Spark中处理映射函数异常的优雅方法是什么

例如:

exampleRDD= ["1","4","7","2","err",3]
exampleRDD=exampleRDD.map(lambda x: int(x))
这将不起作用,因为它将在“err”项上失败

我怎样才能过滤出有缺陷的行并在其余行上执行map,而不必预料到在每一行中会遇到什么样的错误

我们可以做一些类似于定义函数的事情:

def stringtoint(x):
    try:
        a=int(x)
    except:
        a=-99
    return a

然后过滤/映射。但这看起来并不像可能的那么优雅。

您可以直接应用过滤器,然后映射

scala代码示例

exampleRDD.filter(r=>NumberUtils.isNumber(r)).map(r=> int(r))
或者使用平面图

exampleRDD.flatMap(r=> {if (NumberUtils.isNumber(r)) Some(int(r)) else  None})

您可以直接应用过滤器然后映射

scala代码示例

exampleRDD.filter(r=>NumberUtils.isNumber(r)).map(r=> int(r))
或者使用平面图

exampleRDD.flatMap(r=> {if (NumberUtils.isNumber(r)) Some(int(r)) else  None})

您可以直接应用过滤器然后映射

scala代码示例

exampleRDD.filter(r=>NumberUtils.isNumber(r)).map(r=> int(r))
或者使用平面图

exampleRDD.flatMap(r=> {if (NumberUtils.isNumber(r)) Some(int(r)) else  None})

您可以直接应用过滤器然后映射

scala代码示例

exampleRDD.filter(r=>NumberUtils.isNumber(r)).map(r=> int(r))
或者使用平面图

exampleRDD.flatMap(r=> {if (NumberUtils.isNumber(r)) Some(int(r)) else  None})