我正在尝试使用cloudera的quickstart docker容器来测试简单的hadoop/hive作业。我希望能够在s3中运行数据作业,但到目前为止我遇到了问题。
我已经向core-site.xml、hive-site.xml、hdfs-site.xml添加了以下属性。
<property>
<name>fs.s3.awsAccessKeyId</name>
<value>XXXXXX</value>
</property>
<property>
<name>fs.s3.awsSecretAccessKey</name>
<value>XXXXXX</value>
</property>
无论如何,在hive中,当尝试创建指向s3位置的外部表时,我得到了错误:
FAILED: SemanticException java.lang.IllegalArgumentException: AWS Access Key ID and Secret Access Key must be specified as the username or password (respectively) of a s3 URL, or by setting the fs.s3.awsAccessKeyId or fs.s3.awsSecretAccessKey properties (respectively).
2条答案
按热度按时间llew8vvj1#
在clouderaquickstart容器中有许多地方可以设置aws凭据。但是,hadoop配置文件中的凭证属性必须在cloudera服务启动之前设置。将aws密钥导出为环境变量也很有帮助。
在cloudera快速启动容器中设置aws凭证的docker映像的示例可以在这里找到,关于此映像的博客文章可以在这里看到。
基本上,此图像的dockerfile使用shell脚本(内容如下所示)将aws键设置为环境变量,并使用
sed
更新/etc/hadoop/conf/core-site.xml
具有aws s3n和s3a凭据属性。此脚本在quickstart容器中的任何cloudera服务启动之前执行。yh2wf1be2#
我希望您现在已经解决了这个问题,但如果有人要引用此链接,它可能会很有用
在所有xml文件中添加accesskey和secretaccesskey之后,我们需要确保查询中给出的s3位置应该是“s3a://”,其中大多数人给出的位置是“s3://”