python - 如何在年、月、日分区上下推谓词
问题描述
我的输入文件是这样分区的
表/年/月/日。
我需要阅读过去 30 天的数据。由于输入数据集很大(跨越 4 年),我如何实现一个下推谓词来过滤最近 30 天的数据。
解决方案
由于可以传递目标路径列表,首先我们可以在读取文件之前生成路径。以下是假设输入数据为 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)
推荐阅读
- pdf - 使用 Ghostscript 从 PDF 中提取 cmyk 和点分离
- create-react-app - 当服务器代码发生更改时,create-react-app 不会重新启动
- node.js - Mongoose UnhandledPromiseRejectionWarning: MissingSchemaError: Schema还没有为模型注册
- javascript - 如何将包含数组值的 Map/JSON 对象放入本地存储
- python - 为什么我的 python 代码不能正确绘制星星?
- sql - 如何从没有父级的表中删除子记录
- r - ggplot2 在同一个图块中绘制组变量的所有级别
- python - 在gridlayout kivy python中动态添加图像
- python - 如果值在另一个数据帧上,则 CumSum 数据帧行
- mysql - 表上外键的完整性,其中第一个 FK 是一个表上的 PK,但第二个不是一个