#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)