我正在尝试在读取json文件时捕获/忽略解析错误
val DF = sqlContext.jsonFile("file")
有几行不是有效的json对象,但数据太大而无法单独进行(~1TB)
我发现了使用import scala.util.Try
和in.map(a => Try(a.toInt))
引用进行映射的异常处理:
how to handle the Exception in spark map() function?
在使用函数sqlContext.jsonFile
读取json文件时如何捕获异常?
谢谢!
答案 0 :(得分:2)
不幸的是你在这里运气不好。在引擎盖下使用的DataFrameReader.json
几乎是全有或全无。如果您的输入包含格式错误的行,则必须手动过滤这些行。基本解决方案可能如下所示:
import scala.util.parsing.json._
val df = sqlContext.read.json(
sc.textFile("file").filter(JSON.parseFull(_).isDefined)
)
由于上述验证相当昂贵,您可能更愿意完全删除jsonFile
/ read.json
并直接使用已解析的JSON行。