配置Hive元数据到Mysql数据库显示缺少com.mysql.jdbc.Driver类,需要下载mysql-connector-java-<version>.jar相关包,Hive初始化元数据错误

 报错内容

        在执行  schematool -dbType mysql -initSchema -verbose  这个命令时出现错误

root@hadoop ~]# schematool -dbType mysql -initSchema -verbose
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/module/hive-3.1.2/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/module/hadoop-3.1.3/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Metastore connection URL:	 jdbc:mysql://192.168.193.101:3306/hive?createDatabaseIfNotExist=true&useSSL=false
Metastore Connection Driver :	 com.mysql.jdbc.Driver
Metastore connection User:	 root
org.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driver
Underlying cause: java.lang.ClassNotFoundException : com.mysql.jdbc.Driver
org.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driver
	at org.apache.hadoop.hive.metastore.tools.HiveSchemaHelper.getConnectionToMetastore(HiveSchemaHelper.java:97)
	at org.apache.hive.beeline.HiveSchemaTool.getConnectionToMetastore(HiveSchemaTool.java:169)
	at org.apache.hive.beeline.HiveSchemaTool.testConnectionToMetastore(HiveSchemaTool.java:475)
	at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:581)
	at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:567)
	at org.apache.hive.beeline.HiveSchemaTool.main(HiveSchemaTool.java:1517)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.hadoop.util.RunJar.run(RunJar.java:318)
	at org.apache.hadoop.util.RunJar.main(RunJar.java:232)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:264)
	at org.apache.hadoop.hive.metastore.tools.HiveSchemaHelper.getConnectionToMetastore(HiveSchemaHelper.java:85)
	... 11 more
*** schemaTool failed ***

 

报错原因及解决办法:

1.MySQL 服务器连接配置错误

主要检查 :

        MySQL 服务器的连接配置正确,包括主机名、端口号、数据库名称、用户名和密码等信息。

解决办法:

        (1)尝试使用命令行工具或其他客户端工具连接到 MySQL 服务器,验证连接是否正常。

        (2)修改配置元数据文件连接Mysql数据库,在/opt/module/hive/config目录下创建的hive-site.xml(hive地址看你存在什么地方,hive-site.xml主要是你的连接内容)

2.由于缺少MySQL JDBC驱动程序所致(下载并安装 MySQL JDBC 驱动程序,然后将其复制到 Hive 的lib类路径中,即可解决)

检查:

检查系统中是否已经安装了 MySQL JDBC 驱动程序:

find / -name "mysql-connector-java*.jar" 2>/dev/null

解决办法:

如果显示没有,则需要下载(注意版本的搭配

下载地址:MySQL :: Download Connector/J

或者使用wget进行下载:

wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.28.tar.gz

补充一个知识点,wget下载到指定路径 :

wget -P /path/to/your/directory https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.28.tar.gz

下载完成后解压:

tar -zxvf mysql-connector-java-<version>.tar.gz

然后找到mysql-connector-java-8.0.28.jar 这个jar包(只需要这个),复制到hive下的lib即可

cp mysql-connector-java-<version>/mysql-connector-java-<version>.jar /opt/hive/lib/

 最后成功使用:

初始化hive元数据:schematool -dbType mysql -initSchema -verbose

使用Navicat连接mysql,可以看到自动创建hive数据库,并且在数据库中存在的表。

### 回答1: 这个错误是由于Hive元数据存储无法加载MySQL驱动程序引起的。具体原因是Java无法找到com.mysql.jdbc.driver。可能是因为MySQL驱动程序未正确安装或未在Hive配置中正确设置。需要检查Hive配置文件中的JDBC驱动程序路径和MySQL驱动程序是否正确安装。 ### 回答2: 这个错误提示是在使用Hive元数据存储来管理Hive元数据时出现的。它表明Hive元数据存储无法加载MySQL驱动程序,因为找不到该驱动程序的。 造成这个问题的原因可能有几个。可能是MySQL驱动程序没有正确安装,或者Hibernate配置文件中没有正确指定MySQL驱动程序的路径。还有一种可能性是,MySQL驱动程序的版本不兼容当前的Hive版本。 要解决这个问题,可以按照以下步骤进行操作: 1. 检查MySQL驱动程序是否已正确安装并位于正确的位置。可以尝试重新安装驱动程序,并确保将其放置在正确的目录下。 2. 检查Hibernate配置文件是否将MySQL驱动程序的路径正确地指定为参数。这需要查看Hive元数据存储中的hive-site.xml文件,并检查MySQL连接字符串是否正确。 3. 如果使用的Hive版本比MySQL驱动程序的版本旧或新,请确保两者兼容。可以尝试升级或降级MySQL驱动程序的版本,并确保它与当前的Hive版本兼容。 总之,这个错误提示是在使用Hive元数据存储来管理Hive元数据时出现的。它表明Hive元数据存储无法加载MySQL驱动程序,因为找不到该驱动程序的。要解决这个问题,需要检查MySQL驱动程序是否正确安装并位于正确的位置,以及确保Hibernate配置文件正确指定了MySQL驱动程序的路径,并且MySQL驱动程序的版本与当前的Hive版本兼容。 ### 回答3: 这个错误信息的意思是,Hive元数据存储在MySQL数据库中,并且Hive无法找到mysqlJDBC驱动程序来连接MySQL数据库,因此Hive元数据无法加载成功。在Hadoop生态系统中,Hive是一个优秀的数据仓库,它可以使用HQL查询数据,但前提条件是需要配置Hive元数据,并将其保存在数据库中。 出现这个错误可能有很多原因,但最常见的原因是缺少正确的JDBC驱动程序。为了解决这个问题,我们需要按照以下步骤进行操作: 第一步是确定你的MySQL版本,然后下载对应版本的JDBC驱动程序。在下载后,将JDBC驱动程序复制到所有HiveHadoop节点上的相同位置。 第二步是修改Hive配置文件hive-site.xml。在这个文件中,你需要增加以下配置项: <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://yourhost:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> 第三步是重新启动Hive服务,并尝试连接Hive元数据。如果你还想将其他服务与Hive集成,你还需要为它们设置正确的JDBC驱动程序。 综上所述,当Hive无法加载MySQL JDBC驱动程序时,这个错误就会出现。为了解决这个问题,我们需要下载配置正确的JDBC驱动程序,并修改Hive配置文件。如果你仍然无法解决这个问题,你可以通过检查HiveMySQL的日志来进一步排查故障。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值