如何处理 Spark Map() 函数中的异常?

2024-02-23

我想忽略 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(使用前将#替换为@)

如何处理 Spark Map() 函数中的异常? 的相关文章

随机推荐