Hive连接数据库失败的原因(NestedThrowables)

NestedThrowables:
java.sql.SQLException: Unable to open a test connection to the given database. JDBC url = jdbc:mysql://hadoop:3306/metastore?createDatabaseIfNotExist=true, username = root. Terminating connection pool (set lazyInit to true if you expect to start your database after your app). Original Exception: ------
java.sql.SQLException: null,  message from server: "Host 'bigdata-senior01' is not allowed to connect to this MySQL server

学习hive过程中,安装好了mysql并且完成了hive的配置

bin/hive

今天在启动hive的时候,报错。

主要有以下三个原因:

1.hive配置失败

在conf/下配置hive-site.xml   我的主机名是bigdata (自己修改)


<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://bigdata:3306/metastore?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>
        <property>
                <name>javax.jdo.option.ConnectionUserName</name>
                <value>root</value>
                <description>username to use against metastore database</description>
        </property>
        <property>
                <name>javax.jdo.option.ConnectionPassword</name>
                <value>12345</value>
                <description>password to use against metastore database</description>
        </property>

        <property>
                <name>hive.cli.print.header</name>
                <value>true</value>
                <description>Whether to print the names of the columns in query output.</description>
        </property>

        <property>
                <name>hive.cli.print.current.db</name>
                <value>true</value>
                <description>Whether to include the current database in the Hive prompt.</description>
        </property>
</configuration>

 

2.导入的jar包错误或者版本太低

这里我使用的数据库是5.7但是没有对应的jar包,所以可以使用高一点的版本  比如8.0.16

然后把jar包拷贝到hive目录下的lib文件夹中

 

3.忘记启动hadoop,(初学者容易遗忘的原因),hive是基于hadoop的数据仓库,首先要启动hadoop之后才能使用hive连接数据库,切记切记/

之后重新启动即可

 

 


 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
当在Hive中尝试创建数据库时,可能会遇到各种原因导致创建失败Hive是基于Hadoop的数据仓库工具,创建数据库失败通常涉及以下几个步骤和可能的问题: 1. **权限不足**:如果当前用户没有足够的权限执行CREATE DATABASE操作,你需要确认是否使用了具有适当角色或拥有CREATE privilege的用户。 2. **名称冲突**:如果你试图创建的数据库名字已经存在,Hive会拒绝创建。请检查目标数据库名是否已存在,并选择其他唯一的名字。 3. **语法错误**:检查你的SQL语句是否有语法错误,例如忘记指定数据库模式(如`CREATE DATABASE db_name LOCATION '/path/to/directory'`)。 4. **资源限制**:Hive可能因为系统资源(如磁盘空间、内存)不足而无法创建数据库。确保有足够的可用资源。 5. **环境配置问题**:确保Hadoop配置文件(如hdfs-site.xml)正确配置,Hive可以访问存储数据的HDFS。 6. **元存储问题**:Hive Metastore服务(通常是基于内存的)可能没有启动或存在问题,影响到数据库的创建。 7. **日志错误**:查看Hive的日志文件(如hiveserver2.log)中可能包含关于创建失败的具体错误信息。 为了解决这个问题,你可以按照以下步骤排查: - 检查错误消息:日志文件或Hive的返回信息通常会提供线索。 - 使用Hive CLI工具,尝试以更详细的模式运行创建命令并观察输出。 - 使用`DESCRIBE DATABASES`命令确认数据库是否存在或是否有其他错误提示。 - 如果是权限问题,使用正确的用户或者授予相应的权限。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值