Hive 问题连接到本地 Minio S3

Hive problem connection to local Minio S3

我已经用 Minio 配置了我的本地 S3 服务器。 我可以在 these steps 之后从 Spark 访问存储在其中的文件。 但是,如果我尝试配置 Hive 以访问存储在此服务器中的外部镶木地板文件,我会收到以下错误:

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:java.lang.IllegalArgumentException: AWS Access Key ID and Secret Access Key must be specified by setting the fs.s3n.awsAccessKeyId and fs.s3n.awsSecretAccessKey properties (respectively).)

我的蜂巢版本是:1.1.

我在 Hadoop 2.6 中使用 cdh5.16.1。

我的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 版本不兼容),但我收到相同的异常消息。

创建Table命令抛出异常:

  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'

提前致谢。

最后我设法获得了 Cloudera Manager 的访问权限(服务器已关闭并且我没有权限)并且我已经重新启动了它的所有服务。您也可以使用 Cloudera Manager 修改文件,但如果不这样做(就像我的情况),它会警告您您的配置没有在所有应该更新的文件中更新,并且它让您可以自动修改所有这些文件。 我强烈建议使用 Cloudera Manager 修改不同服务中的配置属性,因为它会修改所有相关文件中的这些属性,然后帮助您重新启动这些服务。