如何忽略 MatchError 然后在 spark-sql 中处理一个大的 json 文件?
how to ignore MatchError then processing a large json file in spark-sql?
我正在尝试使用 spark 处理一堆大型 json 日志文件,但每次使用 scala.MatchError
时都会失败,无论我是否提供架构。
我只想跳过与架构不匹配的行,但我在 spark 文档中找不到如何操作。
我知道写一个 json 解析器并将其映射到 json 文件 RDD 可以完成任务,但我想使用 sqlContext.read.schema(schema).json(fileNames).selectExpr(...)
因为它更容易维护。
这将在 Spark 1.6.1 中解决https://issues.apache.org/jira/browse/SPARK-12057
现在您可以编译包含修复程序的 spark 版本(本质上是在 MatchError 上引发解析异常而不是一般异常,然后将记录报告为已损坏 - 请参阅代码 https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/json/JacksonParser.scala)
我正在尝试使用 spark 处理一堆大型 json 日志文件,但每次使用 scala.MatchError
时都会失败,无论我是否提供架构。
我只想跳过与架构不匹配的行,但我在 spark 文档中找不到如何操作。
我知道写一个 json 解析器并将其映射到 json 文件 RDD 可以完成任务,但我想使用 sqlContext.read.schema(schema).json(fileNames).selectExpr(...)
因为它更容易维护。
这将在 Spark 1.6.1 中解决https://issues.apache.org/jira/browse/SPARK-12057
现在您可以编译包含修复程序的 spark 版本(本质上是在 MatchError 上引发解析异常而不是一般异常,然后将记录报告为已损坏 - 请参阅代码 https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/json/JacksonParser.scala)