Проблема с подключением Hive к локальному Minio S3

Я настроил свой локальный сервер S3 с помощью Minio. Я могу получить доступ к файлам, хранящимся в нем, из Spark, следуя эти шаги. Но если я попытаюсь настроить Hive для доступа к внешнему паркетному файлу, хранящемуся на этом сервере, я получаю следующую ошибку:

СБОЙ: ошибка выполнения, код возврата 1 из org.apache.hadoop.hive.ql.exec.DDLTask. MetaException (сообщение: java.lang.IllegalArgumentException: необходимо указать идентификатор ключа доступа AWS и секретный ключ доступа, задав свойства fs.s3n.awsAccessKeyId и fs.s3n.awsSecretAccessKey (соответственно).)

Моя версия улья: 1.1.

Я использую cdh5.16.1 с Hadoop 2.6.

Моя версия Spark - 1.6.

Я попытался изменить файлы (hive-site.xml и core-site.xml) с указанными свойствами здесь, но я получаю ту же ошибку. Я также попытался добавить эти свойства во время выполнения, введя следующие команды в оболочке Hive:

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 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'

Заранее спасибо.


person AngryCoder    schedule 03.06.2019    source источник
comment
Я изменил свою CREATE TABLE, чтобы указать КЛЮЧ ДОСТУПА И СЕКРЕТНЫЙ КЛЮЧ ДОСТУПА в URI моего местоположения: LOCATION 's3a: // ACCESSKEY: SECRETACCESSKEY @ bucket / table /' И теперь я получаю следующую ошибку: Невозможно выполнить HTTP-запрос : Подключиться к bucket.s3.amazonaws.com:443 не удалось: время подключения истекло. Похоже, что если бы я не набирал свойство fs.s3a.path.style.access = true, но я это сделал. Есть предположения?   -  person AngryCoder    schedule 04.06.2019
comment
звучит так, будто свойство fs.s3a.endpoint не проходит, оно пытается поговорить с AWS, а не с minio   -  person stevel    schedule 07.06.2019


Ответы (1)


Наконец мне удалось получить доступ к Cloudera Manager (сервер был отключен, и у меня не было разрешений), и я перезапустил все службы с него. Вы также можете изменять файлы с помощью Cloudera Manager, но в противном случае (как в случае со мной) он предупредит вас, что ваша конфигурация обновлена ​​не во всех файлах, которые должны быть, и дает вам возможность изменять автоматически все эти файлы. Я настоятельно рекомендую использовать Cloudera Manager для изменения свойств конфигурации в различных службах, поскольку он изменяет эти свойства во всех связанных файлах, а затем помогает перезапустить эти службы.

person AngryCoder    schedule 10.06.2019