Apache Spark - 异常处理如何在映射函数中工作
问题描述:
我正在尝试对输入数据进行url解码。很少有记录解码正常,但是当我在较大的数据上尝试这个时,它会给出错误。我尝试了异常处理来丢弃错误数据,但一次又一次地得到相同的错误。Apache Spark - 异常处理如何在映射函数中工作
val decodedVal = convertedVal22.map(s => doWork(s))
def doWork(param : String) : String =
{
var x9 = ""
try {
var y = java.net.URLDecoder.decode(param, "UTF-8")
x9 = y
}
return x9
}
错误:
URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "%2"
答
运行时异常需要在catch块。
def doWork(param : String) : String = {
var x9 = ""
try {
var y = java.net.URLDecoder.decode(param, "UTF-8")
x9 = y
return x9
}
catch {
case runtime: RuntimeException =>
{
""
}
}
并且用nonEmpty过滤它。
val decodedVal = convertedVal22.map(s => doWork(s)).filter(_.nonEmpty)
你的'catch'块在哪里?这不应该编译。 –
这是编译没有catch块,我不认为赶上是强制性的。 –
你[很快学会了一些东西](http://stackoverflow.com/questions/1547465/what-does-scalas-try-mean-without-either-a-catch-or-finally-block)。如果没有“catch”块,你不会捕捉任何异常。 –