Правильный способ проверить, существует ли папка в AWS S3 из AWS EMR? - PullRequest
0 голосов
/ 09 апреля 2019

Прежде чем назвать этот дубликат, пожалуйста, прочитайте мой вопрос.

Я нашел два метода проверки, существует ли папка в S3 из EMR , но мне интересно, какой из них правильный.Чтобы получить учетные данные компьютера EMR (например, из приложения Spark) для доступа к S3, я сделал: new InstanceProfileCredentialsProvider().getCredentials.

  1. Использование AmazonS3.doesObjectExist(s3Bucket, s3Prefix)

    • s3.doesObjectExist("my-bucket", "my-directory") возвращает ложь, но это правда
    • s3.doesObjectExist("my-bucket", "my-directory/") возвращает истину
    • s3.doesObjectExist("my-bucket", "my-directory2") возвращает ложь, но это правда
    • s3.doesObjectExist("my-bucket", "my-directory2/") возвращает ложь, но этоверно
  2. А пока вот мое исправление: s3.get.listObjectsV2(s3_bucket, s3_object).getKeyCount > 0.Вам не нужно извлекать все результаты, соответствующие этому запросу, а только первое окно, проверяя, не является ли оно пустым.

Почему (1) возвращает false, когда (2) вернуть истину?Какое решение вы посоветуете?

1 Ответ

1 голос
/ 10 апреля 2019

А пока я бы предложил придерживаться 2 или обновить версию библиотеки.Поскольку вы работаете со стеком EMR, это может оказаться невозможным без конфликтов.

Были проблемы , о которых ранее сообщалось с doesObjectExist.

...