【发布时间】:2014-11-20 09:25:30
【问题描述】:
我正在使用 SparkSQL 加载一堆 JSON 文件,但有些有问题。
我想继续处理其他文件,同时忽略坏文件,我该怎么做?
我尝试使用 try-catch 但仍然失败。示例:
try {
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext._
val jsonFiles=sqlContext.jsonFile("/requests.loading")
} catch {
case _: Throwable => // Catching all exceptions and not doing anything with them
}
我失败了:
14/11/20 01:20:44 INFO scheduler.TaskSetManager: Starting task 3065.0 in stage 1.0 (TID 6150, HDdata2, NODE_LOCAL, 1246 bytes)<BR>
14/11/20 01:20:44 WARN scheduler.TaskSetManager: Lost task 3027.1 in stage 1.0 (TID 6130, HDdata2): com.fasterxml.jackson.core.JsonParseException: Unexpected end-of-input: was expecting closing quote for a string value
at [Source: java.io.StringReader@753ab9f1; line: 1, column: 1805]
【问题讨论】:
-
你确定它真的失败了吗?这些日志条目分别是 INFO 和 WARN 行。 Spark 日志记录非常冗长,这两行并不能说服我没有捕获到异常。如果我看到一条 ERROR 行,情况会有所不同,但我个人会将
println放入 catch 正文中以确保。 -
是的,我很肯定它失败了。我首先通过过滤掉坏的 json 来处理它,但后来我被告知 1.2 版现在可以忽略格式错误的 json 字符串,所以我切换到 1.2。
标签: apache-spark apache-spark-sql