scala - scala- 从 S3 存储桶读取文件
问题描述
我想从 S3 存储桶中读取特定文件。在我的 S3 存储桶中,我将拥有如此多的对象(目录和子目录)。我想遍历所有对象并且必须只读取该文件。
我正在尝试以下代码:
val s3Client: AmazonS3Client = getS3Client()
try {
log.info("Listing objects from S3")
var counter = 0
val listObjectsRequest = new ListObjectsRequest()
.withBucketName(bucketName)
.withMaxKeys(2)
.withPrefix("Test/"+"Client_cd" + "/"+"DM1"+"/")
.withMarker("Test/"+"Client_cd" + "/"+"DM1"+"/")
var objectListing: ObjectListing = null
do {
objectListing = s3Client.listObjects(listObjectsRequest)
import scala.collection.JavaConversions._
for (objectSummary <- objectListing.getObjectSummaries) {
println( objectSummary.getKey + "\t" + StringUtils.fromDate(objectSummary.getLastModified))
}
listObjectsRequest.setMarker(objectListing.getNextMarker())
}
while (objectListing.isTruncated())
}
catch {
case e: Exception => {
log.error("Failed listing files. ", e)
throw e
}
}
在此路径中,我必须仅读取最新月份文件夹中的 .gz 文件。文件路径:
"Mybucket/Test/Client_cd/Dm1/20181010_xxxxx/*.gz"
在这里,我必须将 Client_cd 作为特定客户端的参数传递。
如何过滤对象并获取特定文件?
解决方案
如果您使用的是 EMR 或您的 S3 配置设置正确,您也可以使用sc.textFile("s3://bucket/Test/Client_cd/Dm1/20181010_xxxxx/*.gz")
推荐阅读
- comments - WebAssembly 中的多行注释
- pytorch - PyTorch Geometric 中的图神经网络问题
- split - Power Query - 按分隔符将列拆分为固定数量的列,并在最后一列中保留多余的字段
- jenkins - 如何使用 groovy 获取 Jenkins Pipeline 工作区下的所有文件夹名称
- ag-grid-angular - Angular ag-grid 希望始终为组列显示 V 形或展开图标
- python - 使用 pymysql 从烧瓶容器访问 docker 容器中的 mysql 数据库
- python - 打印后如何不关闭python控制台
- python - 写入文件时的排列并行化
- mysql - 从表中获取每个产品的最后固定价格
- javascript - onLayoutChange 正在从本地存储中重置我的数据