【发布时间】:2023-03-14 04:11:01
【问题描述】:
我已经用 Minio 配置了我的本地 S3 服务器。 我可以通过 these steps 从 Spark 访问存储在其中的文件。 但是,如果我尝试将 Hive 配置为访问存储在此服务器中的外部 parquet 文件,则会收到以下错误:
失败:执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1。 MetaException(message:java.lang.IllegalArgumentException: AWS 访问密钥 ID 和秘密访问密钥必须通过设置 fs.s3n.awsAccessKeyId 和 fs.s3n.awsSecretAccessKey 属性(分别)来指定。)
我的蜂巢版本是:1.1。
我将 cdh5.16.1 与 Hadoop 2.6 一起使用。
我的 spark 版本是 1.6。
我尝试使用指定的属性here 修改文件(hive-site.xml 和 core-site.xml),但我得到了同样的错误。 我还尝试在执行时添加这些属性,在 Hive shell 中键入以下命令:
SET fs.s3a.endpoint=http://127.0.0.1:9003;
SET fs.s3a.access.key=ACCESSKEY;
SET fs.s3a.awsAccessKeyId=ACCESSKEY;
SET fs.s3a.secret.key=SECRETKEY;
SET fs.s3a.awsSecretAccessKey=SECRETKEY;
SET fs.s3a.path.style.access=true;
SET fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem;
请注意,我只有 fs.s3a.access.key 和 fs.s3a.secret.key 因为我没有使用 AWS S3(我使用的是本地 S3),但我已将 AWS KEY 属性添加到我的配置文件,因为我收到异常消息。我也尝试使用 s3n 而不是 s3a(检查 s3a 是否与我的 Hive 版本不兼容),但我得到了相同的异常消息。
引发异常的创建表命令:
CREATE EXTERNAL TABLE aml.bgp_pers_juridi3(
internal_id string,
society_type string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
's3n://oclrh65c034.isbcloud.isban.corp:9003/minio/entities/bgp_pers_juridi2'
提前致谢。
【问题讨论】:
-
我已经更改了我的 CREATE TABLE 以便在我的位置 URI 中指定访问密钥和秘密访问密钥:LOCATION 's3a://ACCESSKEY:SECRETACCESSKEY@bucket/table/' 现在我得到了以下错误:无法执行 HTTP 请求:连接到 bucket.s3.amazonaws.com:443 失败:连接超时。好像我没有输入属性 fs.s3a.path.style.access=true 但我做到了。有什么想法吗?
-
听起来 fs.s3a.endpoint 属性没有通过,它试图与 AWS 而不是 minio 对话