Невозможно запустить Hive, и каталог «hive» не существует в Trino

#mysql #hadoop #hive #hive-metastore #trino

#mysql #hadoop #улей #улей-метастор #trino

Вопрос:

Я установил Apache Hive 3, Apache Hadoop 3, MySQL и Trino для запроса данных. Я запустил метастор Hive, у меня запущен MySQL. Но когда я запускаю простой запрос в Trino:

trino> show tables from defau< ==> сбой: строка 1: 1: Каталог ‘hive’ не существует

Когда я пытаюсь запустить Hive CLI. Я получил это исключение:

 Hive Session ID = dd740516-a5d0-4f8d-ae24-065e2cfe889c 
Exception in thread "main" java.lang.ClassCastException: jdk.internal.loader.ClassLoaders$AppClassLoader incompatible with java.net.URLClassLoader 
 at org.apache.hadoop.hive.ql.session.SessionState.<init>(SessionState.java:413) 
 at org.apache.hadoop.hive.ql.session.SessionState.<init>(SessionState.java:389) 
 at org.apache.hadoop.hive.cli.CliSessionState.<init>(CliSessionState.java:60) 
 at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:705) 
 at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:683) 
 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
 at java.base/java.lang.reflect.Method.invoke(Method.java:566) 
 at org.apache.hadoop.util.RunJar.run(RunJar.java:318) 
 at org.apache.hadoop.util.RunJar.main(RunJar.java:232) 
 

Я попытался добавить эти свойства hive-site.xml , но я не могу запустить Hive CLI.

 <property> 
 <name>system:java.io.tmpdir</name> 
 <value>/tmp/hive</value> 
 </property> 
 <property> 
 <name>system:user.name</name> 
 <value>${user.name}</value> 
 </property> 
 

Кто-нибудь может помочь, пожалуйста? Большое спасибо

Ответ №1:

Я могу ответить на первый вопрос о командной строке Trino.

Прежде чем вы сможете выполнить запрос в Trino для ваших данных в HDFS, вам нужно сначала настроить каталог соединителей hive. В вашей установке Trino должен быть etc каталог. Под этим каталогом находится etc/catalog каталог.

Создайте новый файл etc/catalog/hive.properties и добавьте следующую конфигурацию.

 connector.name=hive-hadoop2
hive.metastore.uri=thrift://<your-metastore-ip-address>:9083
 

Давайте разберем, что означают эти свойства:

  1. connector.name=hive-hadoop2 указывает, что каталог будет использовать соединитель Trino hive.
  2. hive.metastore.uri=thrift://<your-metastore-ip-address>:9083 сообщает Trino, где найти метахран, установленный с Hive.

Если вы не уверены, где найти IP-адрес вашего метастора, в документации hive указаны некоторые файлы конфигурации, которые содержат их в зависимости от того, какую версию Hadoop / Hive вы используете.

Hive и Trino совместно используют метахран, но выполняют запросы на совершенно разных ресурсах. Я написал этот блог, чтобы помочь представить эти концепции, когда люди начинают с Trino. Возможно, это может помочь при запуске.

Предполагая, что в вашей настройке нет ничего слишком сложного, это должно быть все, что требуется. В некоторых случаях вам может понадобиться hive.config.resources , чтобы содержать путь к вашему hdfs-site.xml и core-site.xml .