如何对年、月、日分区执行下推 predicate

b4wnujal  于 2021-07-14  发布在  Spark
关注(0)|答案(1)|浏览(355)

我的输入文件是这样分区的
表/年/月/日。
我需要阅读过去30天的数据。由于输入数据集是巨大的(跨越4年),我如何实现一个只过滤最后30天数据的下推 predicate 。

7fhtutme

7fhtutme1#

由于可以传递目标路径列表,因此首先可以在读取文件之前生成路径。下面是一个示例代码,假设输入数据为Parquet格式:

from datetime import datetime, timedelta
start_date=datetime.strptime("2021-01-01", "%Y-%m-%d")
days = 30
paths=[]
for i in range(0, days+1):
    oper_date=start_date - timedelta(days=i)
    path = "table/{year}/{month}/{day}".format(year=oper_date.year, month=oper_date.month, day = oper_date.day)
    paths.append(path)
spark.read.parquet(*paths)

相关问题