【问题标题】:how to ignore MatchError then processing a large json file in spark-sql?如何忽略 MatchError 然后在 spark-sql 中处理大型 json 文件?
【发布时间】:2015-12-22 23:36:01
【问题描述】:

我正在尝试使用 spark 处理一堆大型 json 日志文件,但每次使用 scala.MatchError 都会失败,无论我是否给它架构。

我只想跳过与架构不匹配的行,但我在 spark 的文档中找不到方法。

我知道编写一个 json 解析器并将其映射到 json 文件 RDD 可以完成工作,但我想使用sqlContext.read.schema(schema).json(fileNames).selectExpr(...),因为它更易于维护。

【问题讨论】:

  • 如果验证数据不是选项,我怀疑是否有一种简单的方法。看起来您可以修补 JacksonParser.parseJson 以记录而不是抛出异常。

标签: apache-spark apache-spark-sql


【解决方案1】:

这将在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 2017-01-01
    • 2017-03-04
    • 1970-01-01
    相关资源
    最近更新 更多