Я использую Spark в кластере AWS EMR.Моя настройка заключается в том, что все интересующие файлы находятся в корзине S3 в учетной записи A, в то время как ключ KMS, который шифрует файлы, находится в учетной записи B. Для работы с этим я настроил роль IAM между учетными записями, которую должна выполнятьроль IAM кластера EC2 в учетной записи A, которая может получить доступ к корзине и ключу KMS.Однако, это не похоже на работу.
Журнал полон сообщений, подобных этому, для каждого найденного файла:
18/10/10 19:08:00 WARN InMemoryFileIndex: The directory s3://mybucket/subfolder/subfolder2/file.csv was not found. Was it deleted very recently?
Это загадочно, потому что я знаю путь /Файл существует в S3, и я даже дошёл до SSH к узлу EMR, взял на себя роль и сам выполнил команду загрузки S3 из CLI, и она работает без проблем, поэтому операция с предполагаемой ролью выглядит нормально.Я также могу загружать данные в том же контейнере, который был зашифрован с помощью ключа KMS, принадлежащего учетной записи A, но никогда не зашифрован ключом из учетной записи B.
Я использую очень похожие пользовательские учетные данныепоставщик роли IAM для нескольких учетных записей: https://github.com/zillow/aws-custom-credential-provider/blob/master/src/main/java/com/zillow/zda/data_lake/credential/RoleBasedAWSCredentialProvider.java на основании рекомендаций AWS: https://aws.amazon.com/blogs/big-data/securely-analyze-data-from-another-aws-account-with-emrfs/
Кто-нибудь когда-нибудь сталкивался с этой ошибкой Spark?Что это пытается сказать мне?На первый взгляд, это просто кажется неправильным: путь существует и доступен из самого экземпляра EC2 после выполнения операции предположительной роли в CLI.