从目录中读取 spark 分区数据
Reading spark partitioned data from directories
我的数据在 s3 存储桶中按年、月、日分区。我需要读取最近六个月的数据 everyday.I 我正在使用以下代码读取数据,但它在几个月内选择了负值。有没有办法读取最近六个月的正确数据?
from datetime import datetime
d = datetime.now().day
m = datetime.now().month
y = datetime.now().year
df2=spark.read.format("parquet") \
.option("header","true").option("inferSchema","true") \
.load("rawdata/data/year={2021,2022}/month={m-6,m}/*")
您可以使用地址(字符串)列表作为您的 .load()
参数。首先,您可以创建向后六个月(从今天开始)的列表:
from datetime import date
from dateutil.relativedelta import relativedelta
y_m_list = [((date.today()+relativedelta(months=-i)).year, (date.today()+relativedelta(months=-i)).month) for i in range(0,6)]
y_m_list
输出:
[(2022, 1), (2021, 12), (2021, 11), (2021, 10), (2021, 9), (2021, 8)]
然后将参数创建为
.load([f"rawdata/data/year={x}/month={y}" for x,y in y_m_list])
我的数据在 s3 存储桶中按年、月、日分区。我需要读取最近六个月的数据 everyday.I 我正在使用以下代码读取数据,但它在几个月内选择了负值。有没有办法读取最近六个月的正确数据?
from datetime import datetime
d = datetime.now().day
m = datetime.now().month
y = datetime.now().year
df2=spark.read.format("parquet") \
.option("header","true").option("inferSchema","true") \
.load("rawdata/data/year={2021,2022}/month={m-6,m}/*")
您可以使用地址(字符串)列表作为您的 .load()
参数。首先,您可以创建向后六个月(从今天开始)的列表:
from datetime import date
from dateutil.relativedelta import relativedelta
y_m_list = [((date.today()+relativedelta(months=-i)).year, (date.today()+relativedelta(months=-i)).month) for i in range(0,6)]
y_m_list
输出:
[(2022, 1), (2021, 12), (2021, 11), (2021, 10), (2021, 9), (2021, 8)]
然后将参数创建为
.load([f"rawdata/data/year={x}/month={y}" for x,y in y_m_list])