Spark 读取带有部分模式的 json

Posted

技术标签:

【中文标题】Spark 读取带有部分模式的 json【英文标题】:Spark read json with partial schema 【发布时间】:2017-07-13 21:00:05 【问题描述】:

我需要使用 spark 处理相当大的 json 文件。我不需要 json 中的所有字段,实际上只想读取其中的一部分(而不是读取所有字段和项目)。 我想知道是否可以使用 json 连接器并为其提供部分读取模式,其中仅包含我感兴趣的字段。

【问题讨论】:

【参考方案1】:

这取决于你的 json 是否是多行的。目前 spark 仅支持单行上的 json 作为数据帧。 spark 2.3 的下一个版本将支持多行 json。

但是对于你的问题。我认为您不能使用部分模式来读取 json。您可以首先提供完整架构以作为数据框读入,然后选择您需要将部分架构构建为单独的数据框的特定列。由于spark使用了惰性求值,并且sql引擎能够下推过滤器,所以性能不会差。

【讨论】:

并假设它是每行单个 json?

以上是关于Spark 读取带有部分模式的 json的主要内容,如果未能解决你的问题,请参考以下文章

Spark 2.0.0 读取具有可变模式的 json 数据

如何在 spark dataframes/spark sql 中使用模式读取 json

无法在纱线簇模式下读取带有火花的Hbase数据

Spark结构化流式kafka在没有模式的情况下转换JSON(推断模式)

使用 json 模式更新 spark 数据框中的列

如何在 Spark Scala 中读取带有根元素的多行 json?