如何使用"s3a://"方案使 Hive 2.2.1 成功与 AWS S3 集成



我遵循了有关使用s3a://方案,配置fs.s3a.access.keyfs.s3a.secret.keyhadoop/etc/hadoop/core-site.xmlhive/conf/hive-site.xml

我正处于能够使hdfs dfs -ls s3a://[bucket-name]/正常工作的地步(它返回该存储桶的S3 Ls(。因此,我知道我的信誉,存储桶访问和整体Hadoop设置是有效的。

hdfs dfs -ls s3a://[bucket-name]/
drwxrwxrwx   - hdfs hdfs          0 2017-06-27 22:43 s3a://[bucket-name]/files
...etc. 
hdfs dfs -ls s3a://[bucket-name]/files
drwxrwxrwx   - hdfs hdfs          0 2017-06-27 22:43 s3a://[bucket-name]/files/my-csv.csv

但是,当我尝试从Hive访问相同的S3资源时,例如使用LOCATION 's3a://[bucket-name]/files/'运行任何CREATE SCHEMACREATE EXTERNAL TABLE语句,都会失败。

例如:

创建外部表格(如果不存在(mydb.my_table(my_table_id string,my_tstamp timestamp,my_sig bigint(行格式格式划定的字段终止于','s3a s3a://s3a://[bucket-name]/files/files/';

我一直遇到此错误:

失败:执行错误,从org.apache.hadoop.hive.ql.exec.ddltask返回代码1。metaException(消息:获得异常:java.nio.file.accessdeniedexception s3a://[bucket-name]/files:s3a://[bucket-name]/files上的getfilestatus/files:com.amazonaws.services.services.services.s3.model。Amazons3Exception:禁止(服务:Amazon S3;状态代码:403;错误代码:403禁止;请求ID:C9CF3F9C50EF08D1(,S3扩展请求ID:T2XZ87REKVHKVHKVZVZF HDPTPTOH7CA7CA7PARPIP6MIRM WNDDQNFDQNFFDWERBPPPVERBPPVERBPPVILLEDINM = P>

这没有道理。我可以在HDFS测试中可以看到的水桶访问。而且我已将适当的信用添加到Hive Site.xml中。

注意:使用相同的信用,我对's3n://'和's3a://'有此功能。它只是失败了's3a://'。

有人知道这个方程中缺少什么?

您是否将EMR用于蜂巢环境?如果是这样,EMR不支持S3A。

相关内容

最新更新