如何从 s3 存储桶中获取 Pyspark 中带有前缀的文件?

Posted

技术标签:

【中文标题】如何从 s3 存储桶中获取 Pyspark 中带有前缀的文件?【英文标题】:How to get the files with a prefix in Pyspark from s3 bucket? 【发布时间】:2021-06-15 11:14:02 【问题描述】:

我的 s3 中有不同的文件。现在我想获取以 cop_ 开头的文件。为了实现这一点,我尝试了以下方法:-

source = s3-path
files = [filename for filename in dbutils.fs.ls(source) if filename.startswith('cop_ ')]
print(files)

尝试后出现如下错误:-

AttributeError: 'FileInfo' object has no attribute 'startswith'

S3 文件夹的文件名如下:-

cop_new.csv
public_new.csv
cop_old.csv
public_old.csv

异常输出:-

[cop_new.csv,cop_old.csv]

【问题讨论】:

你能试试filename.name.startswith('cop_ ')吗? 【参考方案1】:

您在调用 .startswith() 时引用的是 FileInfo 对象,而不是字符串。

文件名是FileInfo 对象的属性,所以filename.name.startswith('cop_ ') 应该可以工作。

【讨论】:

以上是关于如何从 s3 存储桶中获取 Pyspark 中带有前缀的文件?的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Pyspark 2.4.4 读取 s3 存储桶中的镶木地板文件

如何从 url 视频中获取图像(存储在 s3 存储桶中)

在运行 AWS Glue ETL 作业并命名输出文件名时,有没有办法从 S3 存储桶中读取文件名。 pyspark 是不是提供了一种方法来做到这一点?

如何使用scala和aws-java-sdk从S3存储桶中获取所有S3ObjectSummary?

如何阻止 Spark 结构化流每次都列出 S3 存储桶中的所有文件

Pyspark 数据帧从一个存储桶中读取,并在同一作业中使用不同的 KMS 密钥写入另一个存储桶