Основная причина: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver Используйте --verbose для подробной трассировки стека.

0

Я пытался создать искровую среду на CentOS6.8 на macOS, используя VMware Fusion.

Я ранее установил jdk-10.0.1, hadoop-2.4.1.tar.gz и MySQL. Они успешно работали.

Однако, когда я пытался отформатировать репозиторий matadata,

schematool -dbType mysql -initSchema

произошла следующая ошибка:

    which: no hbase in (/opt/hive/bin:/usr/local/hive/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/latest/bin:/usr/local/hadoop/sbin:/usr/local/hadoop/bin:/usr/local/hive/bin:/root/bin:/usr/java/latest/bin:/usr/local/hadoop/sbin:/usr/local/hadoop/bin:/opt/hive/bin)
     ^HMetastore connection URL:     jdbc:mysql://hbase01:3306/myhive?createDatabaseIfNotExist=true
    Metastore Connection Driver :    com.mysql.jdbc.Driver
    Metastore connection User:       myhive
    org.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driver
    Underlying cause: java.lang.ClassNotFoundException : com.mysql.jdbc.Driver
    Use --verbose for detailed stacktrace.
    *** schemaTool failed ***

Я проигнорировал его и ввел "$ HIVE_HOME/bin/hive", произошла следующая ошибка:

which: no hbase in (/opt/hive/bin:/usr/local/hive/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/latest/bin:/usr/local/hadoop/sbin:/usr/local/hadoop/bin:/usr/local/hive/bin:/root/bin:/usr/java/latest/bin:/usr/local/hadoop/sbin:/usr/local/hadoop/bin:/opt/hive/bin)
Exception in thread "main" java.lang.ClassCastException: java.base/jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to java.base/java.net.URLClassLoader
        at org.apache.hadoop.hive.ql.session.SessionState.<init>(SessionState.java:387)
        at org.apache.hadoop.hive.ql.session.SessionState.<init>(SessionState.java:363)
        at org.apache.hadoop.hive.cli.CliSessionState.<init>(CliSessionState.java:60)
        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:663)
        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641)
        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:564)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

Я уверен, что я поместил mysql-connector-java в папку lib улья. Но все же есть что-то не так.

Любая помощь приветствуется. Большое спасибо!

Теги:
hadoop
hive

1 ответ

0
Underlying cause: java.lang.ClassNotFoundException : com.mysql.jdbc.Driver

Вышеприведенная ошибка показывает, что у вас есть mysql.jdbc.driver jar отсутствует.

Загрузите соединитель JDBC mysql для доступа к базе данных MySQL из службы Metastore.

Поместите соединительную банку в каталог $ HIVE_HOME/lib, чтобы сделать ее доступной в classpath.

 wget http://www.java2s.com/Code/JarDownload/mysql/mysql-connector-java-commercial-5.1.7-bin.jar.zip
 unzip mysql-connector-java-commercial-5.1.7-bin.jar.zip
 cp mysql-connector-java-commercial-5.1.7-bin.jar  $HIVE_HOME/lib/

Создание базы данных и пользователя с надлежащими правами доступа

MySQL установлен. Выполните следующую команду для доступа к приглашению mysql.

sudo mysql

Теперь выполните команды в командной строке mysql, чтобы настроить пользовательскую схему куста и метастарную схему в MySQL.

create database hive DEFAULT CHARACTER SET utf8; mysql> grant all PRIVILEGES on *.* TO 'hive'@'localhost' IDENTIFIED BY 'password_for_hive' WITH GRANT OPTION;

В приведенной выше команде вместо localhost вы можете использовать IP-адрес или имя хоста сервера Metastore.

Настройка Hive для работы с MySQL

gedit $HIVE_HOME/conf/hive-site.xml

добавьте следующие конфигурации в конец строки.

 <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive</value>
    <description>JDBC connection string used by Hive Metastore</description>
  </property>

  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>JDBC Driver class</description>
  </property>

  <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>hive</value>
      <description>Metastore database user name</description>
  </property>

  <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>password_hive</value>
      <description>Metastore database password</description>
  </property>

  <property>
      <name>hive.metastore.uris</name>
      <value>thrift://localhost:9084</value>
      <description>Thrift server hostname and port</description>
  </property>

## Сохраните файл и закройте его.

В вышеприведенных конфигурациях вместо локального хоста вы можете использовать соответствующий IP-адрес или имя хоста.

Изменение значения свойств hive-site.xml

<property>
    <name>hive.exec.scratchdir</name>
    <value>/home/path/to/apache-hive-2.3.2-bin/iotmp</value>
    <description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.</description>
  </property>
<name>hive.exec.local.scratchdir</name>
    <value>/home/path/to/apache-hive-2.3.2-bin/iotmp</value>
    <description>Local scratch space for Hive jobs</description>
  </property>

  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>/home/path/to/apache-hive-2.3.2-bin/iotmp</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
  </property>

Отредактируйте файл hive-env.sh и добавьте следующее

export METASTORE_PORT=9084

Запустить сервер метаданных Hive

Инициализировать схему базы данных хранилища улей:

 HIVE_HOME/bin/schematool -initSchema -dbType $databaseType $ hive
--service metastore &

начать улей

 hive
  • 0
    Спасибо за вашу помощь. Меня устраивает. Схема Metastore успешно инициализирована. Однако, когда я продолжил и ввел «куст», произошла следующая ошибка: Exception in thread "main" java.lang.ClassCastException: java.base/jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to java.base/java.net.URLClassLoader Интересно, что может привести к этому типу ошибки
  • 0
    MySQL работает на вас?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню