«400 Bad Request» довольно бесполезен, и S3A не только мало что дает, но и S3A-соединитель не печатает даты, так как он связан с аутентификацией. В есть большой раздел, посвященный устранению ошибки
Тот факт, что он получил запрос, означает, что он имеет некоторые учетные данные, только дальнему концу они не нравятся
[ 1116] Возможности
Вы должны автоматически использовать аутентификацию IAM в качестве механизма аутентификации с разъемом S3A; последний проверяется после: config & amp; env vars.
fs.s3a.aws.credentials.provider
- оно должно быть не задано или содержать опцию com.amazonaws.auth.InstanceProfileCredentialsProvider
hadoop
в командной строке, захватите [116 ] storeiag hadoop jar cloudstore-0.1-SNAPSHOT.jar storediag s3a://testmys3/
он должен выбросить то, что он делает относительно аутентификации.
Обновление
Как прокомментировал оригинальный автор, это произошло из-за необходимости аутентификации v4 на конкретной конечной точке S3. Это можно включить в версии 2.7x клиента s3a, но только через системные свойства Java. Для 2.8+ есть несколько fs.s3a. опции, которые вы можете установить вместо этого
этот конфиг работал
./spark-shell --packages com.amazonaws:aws-java-sdk:1.7.4,org.apache.hadoop:hadoop-aws:2.7.3 --conf spark.hadoop.fs.s3a.endpoint=s3.us-east-2.amazonaws.com --conf spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem --conf spark.hadoop.fs.s3a.aws.credentials.provider=com.amazonaws.auth.InstanceProfileCredentialsProvider --conf spark.executor.extraJavaOptions=-Dcom.amazonaws.services.s3.enableV4=true --conf spark.driver.extraJavaOptions=-Dcom.amazonaws.services.s3.enableV4=true