hive教程:使用mysql存储元数据 作者:马育民 • 2021-03-10 14:17 • 阅读:10535 # derby的缺点 默认使用 derby ,只能启动一个 hive 客户端,再启动一个 hive 客户端就会报错,在企业开发中,是肯定不行的 # 安装mysql [hive3.1.x centos7安装部署mysql5.7.32(.tar.gz解压缩版)](https://www.malaoshi.top/show_1IX25H3si710.html "hive3.1.x centos7安装部署mysql5.7.32(.tar.gz解压缩版)") # 复制mysql驱动 将 mysql 驱动 `mysql-connector-java-5.1.47.jar` 上传到 `/program/hive-3.1.2/lib/` 目录下 # 配置 在 `/program/hive-3.1.2/conf` 目录下新建 `hive-site.xml` 文件 执行下面命令: ``` cd /program/hive-3.1.2/conf ``` ``` vim hive-site.xml ``` 内容如下: **注意:** ip、port、用户名、密码 ``` javax.jdo.option.ConnectionURL jdbc:mysql://hadoop1:3306/metastore?useSSL=false javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver javax.jdo.option.ConnectionUserName root javax.jdo.option.ConnectionPassword root hive.metastore.schema.verification false hive.metastore.event.db.notification.api.auth false hive.metastore.warehouse.dir /user/hive/warehouse ``` **注意1:** 修改 mysql 的用户名、密码 # mysql创建hive元信息数据库 ### 登录 MySQL ``` mysql -uroot -proot ``` ### 新建 Hive 元数据库 ``` create database metastore; ``` ### 退出 ``` exit ``` 或 ``` quit ``` # 初始化 Hive 元数据库 ``` schematool -initSchema -dbType mysql -verbose ``` **解释:** - -verbose:显示详细信息 **显示如下信息表示成功:** ``` Initialization script completed schemaTool completed ``` # 启动hive **注意:**需要先启动 hadoop NameNode 和 DataNode、yarn ``` /program/bin/hadoop.sh start ``` ``` hive ``` # 测试启动多个hive 之前的 hive客户端 不关闭,再次打开 hive ``` hive ``` # 查询 t_user 表 ``` select * from t_user; ``` 显示如下: ``` FAILED: SemanticException [Error 10001]: Line 1:14 Table not found 't_user' ``` 不存在 `t_user` 表 ### 查看数据文件 在 HDFS 查看数据文件,文件还在,如下图: [](/upload/0/0/1IX4Nox7VfTe.png) ### 解决 MySQL 没有 `t_user` 表的元数据信息,再次创建表,执行下面命令: ``` create table t_user (id string,username string,password string); ``` 然后再次查询,就能查到数据,执行结果如下: ``` OK 1 lilei 123456 ``` 数据保存在 hadoop中,所以 **之前的 数据 还在**,只是保存 **元数据** 的数据库换成 **mysql** 了 # 插入数据 ``` insert into t_user(id,username,password) values (2,'hanmeimei','11111'); ``` ### 查看hadoop web管理页面 [](https://www.malaoshi.top/upload/pic/hive/QQ20210311110620.png) 多出一个文件 `000000_0_copy_1` 原文出处:http://malaoshi.top/show_1IXjcFzxCDV.html