Python: 如何移动基于year/month/date格式的结构化文件夹中的文件?
Python: How to move files in a structured folder based on year/month/date format?
目前我有一个读取文件的 spark 作业,创建一个数据框,进行一些转换,然后以“year/month/date”格式移动这些记录。
我通过以下方式实现了这一目标:
df.write.option("delimiter", "\t").option("header", False).mode(
"append"
).partitionBy("year", "month", "day").option("compression", "gzip").csv(
config["destination"]
)
我想通过 pythonic 方式实现同样的目的。所以,最后它应该是这样的:
data/2022/04/14
data/2022/04/15
根据您的问题,除了使用 partitionBy
,您还可以修改 config['destination']
,因为 s3 将负责在 s3 路径下创建必要的文件夹
s3_dump_path = config["destination"] ### 's3:/test-path/'
>>> curr_date = datetime.now().date()
>>> year,month,day = curr_date.strftime('%Y'),curr_date.strftime('%m'),curr_date.strftime('%d')
>>> s3_new_path = '/'.join([s3_dump_path,year,month,day])
>>> s3_new_path
's3:/test-path//2022/04/14'
>>> config["destination"] = s3_new_path
df.write.option("delimiter", "\t").option("header", False).mode(
"append"
).option("compression", "gzip").csv(
config["destination"]
)
目前我有一个读取文件的 spark 作业,创建一个数据框,进行一些转换,然后以“year/month/date”格式移动这些记录。 我通过以下方式实现了这一目标:
df.write.option("delimiter", "\t").option("header", False).mode(
"append"
).partitionBy("year", "month", "day").option("compression", "gzip").csv(
config["destination"]
)
我想通过 pythonic 方式实现同样的目的。所以,最后它应该是这样的:
data/2022/04/14
data/2022/04/15
根据您的问题,除了使用 partitionBy
,您还可以修改 config['destination']
,因为 s3 将负责在 s3 路径下创建必要的文件夹
s3_dump_path = config["destination"] ### 's3:/test-path/'
>>> curr_date = datetime.now().date()
>>> year,month,day = curr_date.strftime('%Y'),curr_date.strftime('%m'),curr_date.strftime('%d')
>>> s3_new_path = '/'.join([s3_dump_path,year,month,day])
>>> s3_new_path
's3:/test-path//2022/04/14'
>>> config["destination"] = s3_new_path
df.write.option("delimiter", "\t").option("header", False).mode(
"append"
).option("compression", "gzip").csv(
config["destination"]
)