scala- чтение файла из корзины S3 - PullRequest
0 голосов
/ 13 октября 2018

Я хочу прочитать определенный файл из корзины 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 в качестве параметра для конкретного клиента.

Как отфильтровать объекты и получить определенные файлы?

enter image description here

1 Ответ

0 голосов
/ 14 октября 2018

Если вы используете EMR или ваши конфигурации S3 настроены правильно, вы также можете использовать sc.textFile("s3://bucket/Test/Client_cd/Dm1/20181010_xxxxx/*.gz")

...