首页 > 解决方案 > 将 S3 位置的文件名保存在数组中

问题描述

我有 S3 位置,例如s3://bucket-name/folder-parquet/. 我想从此位置获取所有文件名并将其保存在一个数组中。

因此,如果我们有类似的文件,part-0000.parquet那么我的数组应该是:part-0001.parquets3://bucket-name/folder-parquet/

array = ['part-0000.parquet','part-0001.parquet']

标签: scalaapache-sparkamazon-s3apache-spark-sql

解决方案


您可以使用官方aws sdk 库scala 特定库

这是使用 s3-scala 库的解决方案:

  import jp.co.bizreach.s3scala.S3
  import awscala.Region

  implicit val region = Region.Mumbai
  implicit val s3 = S3(accessKeyId = "accessKeyId", secretAccessKey = "secretAccessKey")
  val bucketName = "bucketName"
  val folderName = "folderName" // s3 object
  val filePathList = s3.bucket(bucketName).get.keys(s"$folderName/").toList
  val fileNameList = filePathList.map(_.replace(s"$folderName/", "")).drop(1)
  println(fileNameList)

推荐阅读