【发布时间】:2019-11-16 11:05:58
【问题描述】:
我有一个目录,其中包含基于日期的文件夹,运行日期是文件夹名称的一部分。我有一个日常的火花工作,我需要在任何一天加载最近 7 天的文件。
不幸的是,该文件夹还包含其他文件以尝试分区发现。
我有以下格式的文件。
prefix-yyyyMMdd/
如何一次性加载过去 7 天内的文件夹。?
由于它是运行日期,我无法使用可用于加载数据的预定义正则表达式,因为我必须考虑月份和年份的变化。
我有几个蛮力解决方案
将所有数据加载到 7 个数据帧中,并对所有 7 个数据帧进行 unionAll,从 7 个数据帧中获取一个数据帧。 这看起来性能低下,但也不是很糟糕
加载整个文件夹并在具有日期的列上执行 where 条件。 这看起来存储空间很大,因为该文件夹包含数年的数据
两者看起来都不高效,并且考虑到每个文件数据本身都很大,我想知道是否有更好的解决方案。
有没有更好的方法?
【问题讨论】:
标签: apache-spark apache-spark-sql