2017-01-13 1 views
0

вечерять y'allзагрузки существует s3 файл через искру дает 403 в Скале, но не в питоне

в питоне, это не выполняет никаких проблем:

sc._jsc.hadoopConfiguration().set("fs.s3a.access.key", "...") sc._jsc.hadoopConfiguration().set("fs.s3a.secret.key", "...") sc.textFile("s3a://path").count()

someBigNumber

в scala, я получаю 403:

sc.hadoopConfiguration.set("fs.s3a.access.key", "...") sc.hadoopConfiguration.set("fs.s3a.secret.key", "...") sc.textFile("s3a://path").count()

StackTrace: com.amazonaws.services.s3.model.AmazonS3Exception: Запретный (Service: Amazon S3; Код состояния: 403; Код ошибки: 403 Запрещено; Идентификатор запроса: ...)

Почему?

это все искра 2.0.

благодаря

ответ

0

Это означает, в данном случае, Python и Scala являются «несовместимыми» и Scala не имеют доступа к amazonaws. Возможно, ключ отличается, и у вас есть опечатка на коде Scala, или, может быть, Scala больше не работает с amazonaws из-за изменения амазонок.

+0

ключи наиболее определенно то же самое. Я получил код scala, изменив python на месте.пары kv появляются в 'hadoopConfiguration'. –

0
  1. Попробуйте установить свойства, прежде чем создавать SC, например, установить sparkConf «spark.hadoop.fs.s3a ...» = значение
  2. Спарк пытается быть умным в искре представить и скопировать в AWS_ env vars в свойства s3a и s3n перед отправкой, даже если свойства установлены. Это может указывать на ваши настройки. Посмотрите на них, проверьте их правильность, возможно, отключите их (или попробуйте установить их).
  3. И S3a проходит через последовательность аутентификации: попытка реквизита hadoop; попытка env vars в процессе назначения; попытка роли ECAM IAM (точные проверки & заказ - это Hadoop JAR). Возможно, что-то в дальнем конце вызывает здесь забаву.
  4. Есть еще один непредвиденный вариант, который довольно небезопасен, чтобы указать имя пользователя: передать в URL-адрес, например s3a: // AAID43ss: 1356 @ bucket/path. Это не работает на Hadoop < 2.8, если есть секретный секрет, и ваши секреты регистрируются на консоли. Используйте осторожно.

Попытка отладки auth-проблем - это PITA, поскольку код преднамеренно избегает наличия полезных отладочных инструкций: мы не смеем регистрировать свойства.

Вы можете найти что-то полезное в разделе Troubleshooting S3A документов Hadoop. Имейте в виду, что это относится к более поздним версиям Hadoop; некоторые вещи, упомянутые там, не будут действительны.

Наслаждайтесь

Steve L (в настоящее время работает над кодом S3A)