Сохранение имен файлов из расположения S3 в массиве

#scala #apache-spark #amazon-s3 #apache-spark-sql

Вопрос:

У меня есть такое местоположение S3 s3://bucket-name/folder-parquet/ . Я хочу получить все имена файлов из этого расположения и сохранить их в массиве.

Так что , если у нас есть такие файлы, как part-0000.parquet , part-0001.parquet s3://bucket-name/folder-parquet/ то мой массив должен выглядеть:

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

Ответ №1:

Вы можете использовать официальную библиотеку 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)