我想忽略 map() 函数中的异常,例如:
rdd.map(_.toInt)
其中 rdd 是RDD[String]
.
但如果遇到非数字字符串,则会失败。
忽略任何异常并忽略该行的最简单方法是什么? (我不想使用过滤器来处理异常,因为可能还有很多其他异常...)
您可以组合使用Try http://www.scala-lang.org/files/archive/nightly/docs/library/index.html#scala.util.Try和地图/过滤器。
Try 会将您的计算包装为 Success(如果它们的行为符合预期)或 Failure(如果抛出异常)。然后,您可以过滤您想要的内容 - 在本例中是成功的计算,但您也可以过滤错误情况以用于记录目的,例如。
以下代码是一个可能的起点。您可以运行并探索它scastie.org http://scastie.org/9296看看它是否符合您的需求。
import scala.util.Try
object Main extends App {
val in = List("1", "2", "3", "abc")
val out1 = in.map(a => Try(a.toInt))
val results = out1.filter(_.isSuccess).map(_.get)
println(results)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)