最近,我在学习hive的时候,用MySQL作为hive的元数据库,配置好hive-site.xml文件后初始化hive的元数据库失败,显示错误为:

org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version. 

Underlying cause: java.sql.SQLNonTransientConnectionException : Public Key Retrieval is not allowed

错误表明在使用JDBC连接数据库时,遇到了安全限制,无法从远程服务器获取公钥来进行加密通信。

以下是我的hive-site.xml内容配置:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
   <name>javax.jdo.option.ConnectionURL</name>
   <value>jdbc:mysql://hadoop102:3307/metastore?useSSL=false</value>
</property>

 <!--数据库驱动  如果你使用的是8.x  驱动是:com.mysql.cj.jdbc.Driver-->
<property>
   <name>javax.jdo.option.ConnectionDriverName</name>
   <value>com.mysql.cj.jdbc.Driver</value>
</property>

 <!--数据库的用户名-->
<property>
   <name>javax.jdo.option.ConnectionUserName</name>
   <value>root</value>
</property>

 <!--数据库的密码-->
<property>
   <name>javax.jdo.option.ConnectionPassword</name>
   <value>111111</value>
</property>

 <!--hive默认在HDFS中的工作目录-->
<property>
   <name>hive.metastore.warehouse.dir</name>
   <value>/user/hive/warehouse</value>
</property>
</configuration>

 我在检查完以下可能导致出现错误的原因后:

1、防火墙是否关闭

2、是否在hive-site.xml配置中关闭了SSL

3、hive-site.xml其它代码是否配置有误

仍然没有解决问题!

最后我更换了三次JDBC的驱动jar包版本,终于解决了问题!

我的 MySQL版本为8.0.26,第一次的驱动版本与之相同,后来换了多个版本直到8.3.0才解决问题,所以大家一定要选择与MySQL版本相适应的驱动版本,若第一次更换驱动版本没有解决,可以试着多更换几个版本。

好了,分享就写到这,希望大家遇到问题切记不要慌,多多实践(不要怕麻烦,也许解决的方法就在下一次时间中),祝大家以后的学习之路一帆风顺!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐