Я использую Spark 2.4 на экземпляре EC2.Я принимаю роль IAM и задаю ключ / секретный ключ / токен в sparkSession.sparkContext.hadoopConfiguration вместе с поставщиком учетных данных как «org.apache.hadoop.fs.s3a.TeilitaryAWSCredentialsProvider».
КогдаЯ пытаюсь прочитать набор данных из s3 (используя s3a, который также установлен в конфигурации hadoop), я получаю сообщение об ошибке
com.amazonaws.services.s3.model.AmazonS3Exception: StatusКод: 403, Сервис AWS: Amazon S3, Идентификатор запроса AWS: 7376FE009AD36330, Код ошибки AWS: ноль, Сообщение об ошибке AWS: Запрещено
Команда чтения:
val myData = sparkSession.read.parquet("s3a://myBucket/myKey")
I 'Мы неоднократно проверяли путь S3, и это правильно.Моя предполагаемая роль IAM имеет нужные привилегии для корзины S3.Единственное, что я могу понять на этом этапе, - это то, что у spark есть какой-то порядок скрытой цепочки учетных данных, и хотя я установил учетные данные в конфигурации hadoop, он все еще получает учетные данные откуда-то еще (мой профиль экземпляра ???).Но у меня нет возможности диагностировать это.
Любая помощь приветствуется.Рады предоставить более подробную информацию.