加载实木复合地板文件夹以根据条件触发数据框

时间:2019-07-05 21:26:50

标签: apache-spark apache-spark-sql

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

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

我的文件格式如下。

prefix-yyyyMMdd/

如何在过去7天内一次加载文件夹??

因为它是运行日期,所以我不能具有可用于加载数据的预定义正则表达式,因为我必须考虑月份和年份的变化。

我有几种蛮力解决方案

  1. 将所有数据加载到7个数据帧中,并对所有7个数据进行unionAll,以从7个数据帧中获得一个数据帧。 这看起来效率低下,但并不是完全不好的

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

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

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

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

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