处理 Spark 地图函数中的坏项
Handling bad items in map function in Spark
在 Spark 中处理 map 函数异常的优雅方法是什么?
例如:
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
然后 filter/map。但这似乎并没有那么优雅。
你可以直接应用过滤器然后映射
示例 Scala 代码
exampleRDD.filter(r=>NumberUtils.isNumber(r)).map(r=> int(r))
或使用平面图
exampleRDD.flatMap(r=> {if (NumberUtils.isNumber(r)) Some(int(r)) else None})
在 Spark 中处理 map 函数异常的优雅方法是什么?
例如:
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
然后 filter/map。但这似乎并没有那么优雅。
你可以直接应用过滤器然后映射
示例 Scala 代码
exampleRDD.filter(r=>NumberUtils.isNumber(r)).map(r=> int(r))
或使用平面图
exampleRDD.flatMap(r=> {if (NumberUtils.isNumber(r)) Some(int(r)) else None})