我遵循了有关使用s3a://
方案,配置fs.s3a.access.key
和 fs.s3a.secret.key
和hadoop/etc/hadoop/core-site.xml
和hive/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 SCHEMA
或CREATE 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。