【问题标题】:Load parquet folders to spark dataframe based on condition根据条件加载镶木地板文件夹以触发数据框
【发布时间】:2019-11-16 11:05:58
【问题描述】:

我有一个目录,其中包含基于日期的文件夹,运行日期是文件夹名称的一部分。我有一个日常的火花工作,我需要在任何一天加载最近 7 天的文件。

不幸的是,该文件夹还包含其他文件以尝试分区发现。

我有以下格式的文件。

prefix-yyyyMMdd/

如何一次性加载过去 7 天内的文件夹。?

由于它是运行日期,我无法使用可用于加载数据的预定义正则表达式,因为我必须考虑月份和年份的变化。

我有几个蛮力解决方案

  1. 将所有数据加载到 7 个数据帧中,并对所有 7 个数据帧进行 unionAll,从 7 个数据帧中获取一个数据帧。 这看起来性能低下,但也不是很糟糕

  2. 加载整个文件夹并在具有日期的列上执行 where 条件。 这看起来存储空间很大,因为该文件夹包含数年的数据

两者看起来都不高效,并且考虑到每个文件数据本身都很大,我想知道是否有更好的解决方案。

有没有更好的方法?

【问题讨论】:

    标签: apache-spark apache-spark-sql


    【解决方案1】:

    DataFrameReader 方法可以采用多条路径,例如

    spark.read.parquet("prefix-20190704", "prefix-20190703", ...)

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 2017-11-21
      • 1970-01-01
      • 2020-04-03
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2018-07-09
      相关资源
      最近更新 更多