Dhi*_*jeb 0 java amazon-s3 amazon-web-services apache-spark
我需要将 S3 存储桶中的文件读入 Spark 数据集。我使用了正确的 secretKey 和 accessKey,我也尝试了端点配置,但出现此错误:
com.amazonaws.SdkClientException: Failed to connect to service endpoint:
at com.amazonaws.internal.EC2ResourceFetcher.doReadResource(EC2ResourceFetcher.java:100)
at com.amazonaws.internal.InstanceMetadataServiceResourceFetcher.getToken(InstanceMetadataServiceResourceFetcher.java:91)
... 74 more
java.nio.file.AccessDeniedException: datalakedbr: org.apache.hadoop.fs.s3a.auth.NoAuthWithAWSException: No AWS Credentials provided by SimpleAWSCredentialsProvider EnvironmentVariableCredentialsProvider InstanceProfileCredentialsProvider : com.amazonaws.SdkClientException: Failed to connect to service endpoint:
at org.apache.hadoop.fs.s3a.S3AUtils.translateException(S3AUtils.java:187)
at org.apache.hadoop.fs.s3a.Invoker.once(Invoker.java:111)
at org.apache.hadoop.fs.s3a.Invoker.lambda$retry$3(Invoker.java:265)
at org.apache.hadoop.fs.s3a.Invoker.retryUntranslated(Invoker.java:322)
at org.apache.hadoop.fs.s3a.Invoker.retry(Invoker.java:261)
Caused by: org.apache.hadoop.fs.s3a.auth.NoAuthWithAWSException: No AWS Credentials provided by SimpleAWSCredentialsProvider EnvironmentVariableCredentialsProvider InstanceProfileCredentialsProvider : com.amazonaws.SdkClientException: Failed to connect to service endpoint:
at org.apache.hadoop.fs.s3a.AWSCredentialProviderList.getCredentials(AWSCredentialProviderList.java:159)
Run Code Online (Sandbox Code Playgroud)
这是使用的方法:
parkSession sparkSession = SparkSession.builder()
.master("local").appName("readFile")
.config("fs.s3a.awsAccessKeyId", "key")
.config("fs.s3a.awsSecretAccessKey", "secretKey")
.getOrCreate();
JavaSparkContext sparkContext = new JavaSparkContext(sparkSession.sparkContext());
String path = "s3a://bucket/path.json";
Dataset<Row> file = sparkSession.sqlContext().read().load(path);
Run Code Online (Sandbox Code Playgroud)
请问有人可以帮忙吗?
小智 5
我认为问题出在财产名称上。
在此处查看 Hadoop 文档:https : //hadoop.apache.org/docs/r2.7.2/hadoop-aws/tools/hadoop-aws/index.html
它说对于 S3A,属性的名称应该是fs.s3a.access.key / fs.s3a.secret.key,而不是fs.s3a.awsAccessKeyId / fs.s3a.awsSecretAccessKey。
其他选项是fs.s3.awsAccessKeyId为S3,或fs.s3n.awsAccessKeyId为S3N。
| 归档时间: |
|
| 查看次数: |
2703 次 |
| 最近记录: |