我想从 S3 存储桶中读取所有 parquet 文件,包括子目录中的所有文件(这些实际上是前缀)。
在 S3 URL 中使用通配符 (*) 仅适用于指定文件夹中的文件。例如,使用此代码将仅读取下面的镶木地板文件target/
folder.
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 和 python 3 结合使用。
如果您想读取目标文件夹下的所有 parquet 文件
"s3://bucket/target/2020/01/01/some-file.parquet"
"s3://bucket/target/2020/01/02/some-file.parquet"
你可以做
df = spark.read.parquet("bucket/target/*/*/*/*.parquet")
缺点是您需要知道镶木地板文件的深度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)