连接到本地minio s3的配置单元问题

arknldoa  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(879)

我已经用minio配置了本地s3服务器。我可以通过以下步骤从spark访问存储在其中的文件。但是,如果尝试将配置单元配置为访问存储在此服务器中的外部Parquet文件,则会出现以下错误:
失败:执行错误,从org.apache.hadoop.hive.ql.exec.ddltask返回代码1。元异常(message:java.lang.illegalargumentexception:必须通过分别设置fs.s3n.awsaccesskeyid和fs.s3n.awssecretaccesskey属性来指定aws访问密钥id和秘密访问密钥。)
我的配置单元版本是:1.1。
我将cdh5.16.1与hadoop2.6结合使用。
我的spark版本是1.6。
我试图用这里指定的属性修改文件(hive-site.xml和core-site.xml),但是我得到了相同的错误。我还尝试在执行时添加这些属性,在配置单元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是否与我的配置单元版本不兼容),但是我得到了相同的异常消息。
引发异常的create 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'

提前谢谢。

envsm3lx

envsm3lx1#

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

相关问题