/ / Як налаштувати Spark, що працює в локальному режимі на Amazon EC2, щоб використовувати правила IAM для S3 - amazon-web-сервіси, amazon-s3, amazon-ec2, apache-spark-2.0

Як налаштувати Spark, що працює в локальному режимі на Amazon EC2, для використання правил IAM для S3 - amazon-web-сервісів, amazon-s3, amazon-ec2, apache-spark-2.0

Я працюю Spark2 в локальному режимі на Amazon EC2, коли я намагаюся читати дані з S3 I, отримую таке виняток:

java.lang.IllegalArgumentException: Ідентифікаційний ключ доступу AWS та секретний ключ доступу повинні бути вказані як ім'я користувача або пароль (відповідно) URL-адреси s3 або шляхом встановлення властивостей fs.s3.awsAccessKeyId або fs.s3.awsSecretAccessKey (відповідно)

Я можу, але краще не вручну встановлювати AccessKey та SecretKey з коду через проблеми із безпекою.

EC2 встановлюється за допомогою правила IAM, що дозволяє йому отримати повний доступ до відповідного пакета S3. Для всіх інших дзвінків API Amazon достатньо, але, здається, іскра його ігнорує.

Чи можу я встановити іскру для використання цього правила IAM замість AccessKey та SecretKey?

Відповіді:

1 для відповіді № 1

Перейти до використання s3a:// схема (з JARs Hadoop 2.7.x на вашому класному шляху), і це відбувається автоматично. Схема "s3: //" з не-EMR версіями spark / hadoop - це не той роз'єм, який потрібно (він старий, не сумісний і був видалений з останніх версій)


1 для відповіді № 2

Я використовую hadoop-2.8.0 та spark-2.2.0-bin-hadoop2.7.

Інтеграція Spark-S3-IAM добре працює із наступними пакетами AWS на драйвері.

spark-submit --packages com.amazonaws:aws-java-sdk:1.7.4,org.apache.hadoop:hadoop-aws:2.7.3  ...

Фрагмент кодів Scala:

sc.textFile("s3a://.../file.gz").count()