amazon-web-services - 如何使用 "s3a://"方案让 Hive 2.2.1 成功与 AWS S3 集成

标签 amazon-web-services hadoop amazon-s3 hive

我遵循了各种已发布的文档,了解如何使用 s3a:// 方案将 Apache Hive 2.1.1 与 AWS S3 集成,配置 fs.s3a.access.keyfs.s3a.secret.key 用于 hadoop/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

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

例如:

CREATE EXTERNAL TABLE IF NOT EXISTS mydb.my_table ( my_table_id string, my_tstamp timestamp, my_sig bigint ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION 's3a://[bucket-name]/files/';

我一直收到这个错误:

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Got exception: java.nio.file.AccessDeniedException s3a://[bucket-name]/files: getFileStatus on s3a://[bucket-name]/files: com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden (Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden; Request ID: C9CF3F9C50EF08D1), S3 Extended Request ID: T2xZ87REKvhkvzf+hdPTOh7CA7paRpIp6IrMWnDqNFfDWerkZuAIgBpvxilv6USD0RSxM9ymM6I=)

这毫无意义。正如在 hdfs 测试中看到的那样,我可以访问存储桶。我已经将适当的凭据添加到 hive-site.xml。

注意:使用相同的凭据,我将其用于“s3n://”和“s3a://”。它只是对“s3a://”失败。

有人知道这个等式中缺少什么吗?

最佳答案

您是否在 Hive 环境中使用 EMR?如果是这样,则 EMR 不支持 s3a。

关于amazon-web-services - 如何使用 "s3a://"方案让 Hive 2.2.1 成功与 AWS S3 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44791397/

相关文章:

python - 在aws中获取表的列名作为元组而不是字符串

java - Hadoop 2.0 JAR 文件

hadoop - 如何将DataNode添加到Cloudera hadoop

ruby-on-rails - rails : Uploading Images to Amazon S3 via Carrierwave only works on "Edit"

java - 如何计算S3文件内容的SHA-256校验和

python - 所有区域的 AWS Cloudformation 堆栈

node.js - 如何在 AWS Lambda 表达式中访问 Kinesis ApproximateArrivalTime

ios - 使用 AWS ios SDK 在 S3 上进行 MultipartUpload 上传

amazon-web-services - 将我的 IP 作为 AWS CFN 参数中的默认值

sql-server - 配置单元加载 CSV : load part of columns (or column mapping)