【问题标题】:Failed to connect to service endpoint when reading file from s3 using Spark and Java使用 Spark 和 Java 从 s3 读取文件时无法连接到服务端点
【发布时间】:2020-12-01 01:13:40
【问题描述】:

我需要将 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)

这是使用的方法:

    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);

请问有人可以帮忙吗?

【问题讨论】:

    标签: java amazon-web-services apache-spark amazon-s3


    【解决方案1】:

    我认为问题出在属性名称上。

    在此处查看 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.

    其他选项为 S3 的 fs.s3.awsAccessKeyId 或 S3N 的 fs.s3n.awsAccessKeyId

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-12
      • 1970-01-01
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多