gpt4 book ai didi

mysql - 根本原因 : java. lang.ClassNotFoundException : com. mysql.jdbc.Driver 使用 --verbose 获取详细的堆栈跟踪信息。

转载 作者:可可西里 更新时间:2023-11-01 15:50:10 26 4
gpt4 key购买 nike

我正在尝试使用 VMware Fusion 在 ma​​cOS 上的 CentOS6.8 上构建 spark 环境。

我之前安装过jdk-10.0.1hadoop-2.4.1.tar.gzMySQL。他们工作成功。

但是,当我尝试格式化 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 放入 hive 的 lib 文件夹中。但是还是有问题。

感谢任何帮助。非常感谢!

最佳答案

根本原因:

java.lang.ClassNotFoundException : com.mysql.jdbc.Driver

上面的错误说明你的mysql.jdbc.driver jar is missing.

  • 下载 mysql JDBC 连接器以从 Metastore 服务访问 MySQL 数据库。

  • 将连接器 jar 放入 $HIVE_HOME/lib 目录,使其在类路径中可用。

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 中配置配置单元用户和 Metastore 模式。

Create database hive DEFAULT CHARACTER SET utf8; mysql> grant allPRIVILEGES on . TO 'hive'@'localhost' IDENTIFIED BY'password_for_hive' WITH GRANT OPTION;

  • 在上面的命令中,您可以使用 Metastore 服务器的 IP 地址或主机名代替 localhost。

  • 配置 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 地址或主机名代替 localhost。

  • 修改hive-site.xml的属性值

    hive.exec.scratchdir /home/path/to/apache-hive-2.3.2-bin/iotmp Hive 作业的 HDFS root scratch dir,它是使用 write all (733) 权限创建的。对于每个连接用户,一个 HDFS 临时目录:${hive.exec.scratchdir}/ 被创建,具有 ${hive.scratch.dir.permission}。 hive.exec.local.scratchdir /home/path/to/apache-hive-2.3.2-bin/iotmp Hive 作业的本地暂存空间
    <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 Metastore 服务器

  • 初始化 Hive Metastore 数据库模式:

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

  • 启动 hive

hive

关于mysql - 根本原因 : java. lang.ClassNotFoundException : com. mysql.jdbc.Driver 使用 --verbose 获取详细的堆栈跟踪信息。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50500718/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com