【问题标题】:Unable to load AWS credentials when using Spark SQL through Beeline通过 Beeline 使用 Spark SQL 时无法加载 AWS 凭证
【发布时间】:2015-07-27 13:25:00
【问题描述】:

使用连接到 SparkSQL 1.3 的 Beeline,我正在尝试创建一个使用 S3 数据的表(使用 s3a 协议):

CREATE EXTERNAL TABLE mytable (...) STORED AS PARQUET LOCATION 's3a://mybucket/mydata';

我收到以下错误:

Error: org.apache.spark.sql.execution.QueryExecutionException: FAILED: AmazonClientException Unable to load AWS credentials from any provider in the chain (state=,code=0)

我在spark-env.sh中设置了以下环境变量:

AWS_ACCESS_KEY_ID=<my_access_key>
AWS_SECRET_ACCESS_KEY=<my_secret_key>

我知道它选择了这个环境,因为这里也设置了类路径,并且它引入了 Hadoop 工具库(具有 S3 连接器)。但是,当我在直线中显示变量时,它说它们是未定义的:

0: jdbc:hive2://localhost:10000> set env:AWS_ACCESS_KEY_ID;
+------------------------------------+
|                                    |
+------------------------------------+
| env:AWS_ACCESS_KEY_ID=<undefined>  |
+------------------------------------+
1 row selected (0.112 seconds)
0: jdbc:hive2://localhost:10000> set env:AWS_SECRET_ACCESS_KEY;
+----------------------------------------+
|                                        |
+----------------------------------------+
| env:AWS_SECRET_ACCESS_KEY=<undefined>  |
+----------------------------------------+
1 row selected (0.009 seconds)

设置fs.s3a.access.keyfs.s3a.secret.key 也没有任何效果:

0: jdbc:hive2://localhost:10000> set fs.s3a.access.key=<my_access_key>;
0: jdbc:hive2://localhost:10000> set fs.s3a.secret.key=<my_secret_key>;

我还有什么地方需要设置这个环境吗?

FWIW,我可以成功使用hadoop fs -ls s3a://mybucket/mydata 列出文件。

更新:

我将以下内容添加到hive-site.xml

<property>
  <name>fs.s3a.access.key</name>
  <value>my_access_key</value>
</property>
<property>
  <name>fs.s3a.secret.key</name>
  <value>my_secret_key</value>
</property>

我现在可以无错误地创建表,但是任何查询它的尝试都会导致此错误:

Error: org.apache.spark.SparkException: Job aborted due to stage failure: 
Task 0 in stage 0.0 failed 1 times, most recent failure: 
Lost task 0.0 in stage 0.0 (TID 0, localhost): com.amazonaws.AmazonClientException: 
Unable to load AWS credentials from any provider in the chain

【问题讨论】:

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


    【解决方案1】:

    解决方案是将我的hdfs-site.xml 文件(其中包含fs.s3a.access.keyfs.s3a.secret.key 值)复制到$SPARK_HOME/conf。然后它神奇地起作用了。

    【讨论】:

    • 谢谢哥们,我被这个问题困扰了几个小时,但你的方法很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多