首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Spark通过Beeline无法加载AWS凭据

使用Spark通过Beeline无法加载AWS凭据
EN

Stack Overflow用户
提问于 2015-05-15 14:50:41
回答 1查看 7.4K关注 0票数 2

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

代码语言:javascript
复制
CREATE EXTERNAL TABLE mytable (...) STORED AS PARQUET LOCATION 's3a://mybucket/mydata';

我得到以下错误:

代码语言:javascript
复制
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中设置了以下环境变量

代码语言:javascript
复制
AWS_ACCESS_KEY_ID=<my_access_key>
AWS_SECRET_ACCESS_KEY=<my_secret_key>

我知道它正在获取这个环境,因为这里也设置了类路径,并且它引入了Hadoop (它有S3连接器)。然而,当我以直线显示变量时,它说它们是未定义的:

代码语言:javascript
复制
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也没有任何效果:

代码语言:javascript
复制
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中添加了以下内容

代码语言:javascript
复制
<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>

我现在可以在没有错误的情况下创建表,但是任何查询它的尝试都会导致以下错误:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-15 17:16:17

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30262567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档