繁体   English   中英

¿如何在 Python 中从多个文件夹中读取多个文件

[英]¿How do I read multiple files from multiple folders in Python

我必须阅读不同年份的多个文件夹中的“.parquet”文件。 1、2年这不是问题,但是超过2年就更复杂了,因为每个月都要读12个子目录。 我展示了一个例子,说明我如何以低效的方式做到这一点。

第 1 步:读取文件

2019年

df_2019_01=spark.read.parquet('/2019/01/name.parquet/')
df_2019_02=spark.read.parquet('/2019/02/name.parquet/')
df_2019_03=spark.read.parquet('/2019/03/name.parquet/')
df_2019_04=spark.read.parquet('/2019/04/name.parquet/')

#...

df_2019_12=spark.read.parquet('/2019/12/name.parquet/')

2020年

df_2020_01=spark.read.parquet('/2020/01/name.parquet/')
df_2020_02=spark.read.parquet('/2020/02/name.parquet/')
df_2020_03=spark.read.parquet('/2020/03/name.parquet/')
df_2020_04=spark.read.parquet('/2020/04/name.parquet/')

#...

df_2020_12=spark.read.parquet('/2020/12/name.parquet/')

第 2 步:联合文件(每年的每个月)。 注意:1)所有文件都具有相同的结构; 2)所有文件夹中的文件名相同。

df = df_2019_01.union(df_2019_02).union(df_2019_03).union(df_2019_04).union(df_2020_12)

通过*更改年份和月份:

df = spark.read.parquet('/*/*/*.parquet')

所有镶木地板文件必须具有相同的架构,否则您的最终数据框将缺少列。 你可以试试这个选项

mergedDF = spark.read.option("mergeSchema", "true").parquet('/*/*/*.parquet')

您的问题与此问题类似,如果您想检索年份和月份,只需按照我在那里的回答即可

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM