【发布时间】:2021-04-30 18:30:17
【问题描述】:
我想读取 JSON 格式的分区数据子集,使用 spark (3.0.1) 从 JSON 推断架构。
我的数据被分区为s3a://bucket/path/type=[something]/dt=2020-01-01/
当我尝试使用 read(json_root_path).where($"type" == x && $"dt" >= y && $"dt" <= z) 读取此内容时,spark 会尝试读取整个数据集以推断架构。
当我尝试提前找出我的分区路径并使用read(paths :_*) 传递它们时,spark 会抛出一个错误,它无法推断架构,我需要手动指定架构。 (请注意,在这种情况下,除非我指定 basePath,否则 spark 也会丢失 type 和 dt 的列,但这很好,我可以忍受。)
我认为,我正在寻找的是一些选项,它告诉 spark 要么仅从相关分区推断架构,因此分区被下推,要么告诉它它可以仅从我给它的路径中的 JSON。请注意,我无法选择调用mcsk 或glue 来维护配置单元元存储。此外,模式会随着时间而变化,因此无法提前指定 - 利用 Spark JSON 模式推断是一个明确的目标。
谁能帮忙?
【问题讨论】:
标签: json apache-spark pyspark apache-spark-sql