scala - Spark中是否有类似twitter.scalding.addTrap的API处理异常

标签 scala hadoop apache-spark

我正在将一个项目从hadoop移植到Spark 2.1.0。以前,它使用twitter.scalding.addTrap处理类似以下的异常:
https://github.com/scalding-io/ProgrammingWithScalding/blob/master/chapter3/src/main/scala/addTrap.scala

对于Spark,我使用sc.textFile(InputPath)读取输入,但是我不知道如何执行以前的异常处理功能。

最佳答案

您可以使用Try

import scala.io.StdIn
import scala.util.{Try, Success, Failure}

def divide: Try[Int] = {
    val dividend = Try(StdIn.readLine("Enter an Int that you'd like to divide:\n").toInt)
    val divisor = Try(StdIn.readLine("Enter an Int that you'd like to divide by:\n").toInt)
    val problem = dividend.flatMap(x => divisor.map(y => x/y))
    problem match {
        case Success(v) =>
            println("Result of " + dividend.get + "/"+ divisor.get +" is: " + v)
            Success(v)
        case Failure(e) =>
            println("You must've divided by zero or entered something that's not an Int. Try again!")
            println("Info from the exception: " + e.getMessage)
            divide
    }
}

关于scala - Spark中是否有类似twitter.scalding.addTrap的API处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44855658/

相关文章:

scala - 如何在 Scalatra 中获取 post 请求的正文?

Scala 2.12.2 发出大量无用的 "Warning: parameter value ... in method ... is never used"警告。如何摆脱它们?

scala - Scala 中的并发 Akka 代理

mysql - 使用SQOOP将数据从MYSQL导入到HIVE

apache-spark - 如何爆炸结构数组?

scala - 使用来自另一列的键从 MapType 列查找值

scala - 如何将 double 组的文件转换为 spark 中的数据帧?

scala - Scala + Gradle +仓库flatDir {}给了xsbti/CompileFailed错误

hadoop - Apache Pig中的SAX Parser支持

hadoop - 由于输入字符串 “30s”的java.lang.NumberFormatException,Apache Tez作业失败