首页 > 解决方案 > 如何在年、月、日分区上下推谓词

问题描述

我的输入文件是这样分区的

表/年/月/日。

我需要阅读过去 30 天的数据。由于输入数据集很大(跨越 4 年),我如何实现一个下推谓词来过滤最近 30 天的数据。

标签: pythonapache-sparkpysparkapache-spark-sqlbigdata

解决方案


由于可以传递目标路径列表,首先我们可以在读取文件之前生成路径。以下是假设输入数据为 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)

推荐阅读