【问题标题】:How to read all columns from Avro when newer partitions have more columns then older ones?当新分区的列比旧分区多时,如何从 Avro 读取所有列?
【发布时间】:2019-11-18 08:29:24
【问题描述】:

我有按日期和时间分区的 Avro 格式的数据,并且我每小时都会收到新数据。较新的分区可以包含比旧分区更多的列。当我通过 Spark 2.4.3 阅读它时,我得到了带有第一个(最旧)分区模式的 DataFrame,并且所有新添加的列都丢失了。 我应该怎么做才能阅读所有专栏?有什么解决方法吗?

谢谢。

【问题讨论】:

  • 你能添加一段你的代码吗?
  • 这里是 =) sparkSession.read .format("avro") .load(pathToData)

标签: apache-spark avro spark-avro


【解决方案1】:

您正在寻找的是能够合并 Spark 读取的不同文件的架构。您可以使用mergeSchema 选项实现此目的。此功能适用于所有基于文件的数据源,而不仅仅是 Avro。

sparkSession.read.format("avro").option("mergeSchema", true).load(pathToData)

【讨论】:

    猜你喜欢
    • 2021-04-28
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 2015-08-27
    • 2021-05-05
    • 1970-01-01
    相关资源
    最近更新 更多