我想从s3 bucket中读取所有Parquet文件,包括子目录中的所有文件(这些实际上是前缀)。
在s3url中使用通配符(*)仅适用于指定文件夹中的文件。例如,使用此代码将只读取 target/
文件夹。
df = spark.read.parquet("s3://bucket/target/*.parquet")
df.show()
假设我的s3桶中有这样一个结构:
"s3://bucket/target/2020/01/01/some-file.parquet"
"s3://bucket/target/2020/01/02/some-file.parquet"
上述代码将引发异常:
pyspark.sql.utils.AnalysisException: 'Path does not exist: s3://mailswitch-extract-underwr-prod/target/*.parquet;'
如何从s3存储桶中读取子目录中的所有Parquet文件?
为了运行我的代码,我使用aws glue 2.0和spark 2.4以及Python3。
2条答案
按热度按时间xkftehaa1#
这对我有用:
nfs0ujit2#
如果要读取目标文件夹下的所有Parquet文件
你能做到的
缺点是你需要知道你的Parquet文件的深度。