需求:
把Hive元数据写道MySQL的metastore数据库中(MySQL默认没有metastore数据库,需要提前创建:create database metastore;)
连接地址:jdbc:mysql//hadoop102:3306/metastore
驱动:com.mysql.cj.jdbc.Driver
用户名:root
密码:123456
1 配置元数据到MySQL
(1)新建元数据库:
#登录到MySQL
mysql -u root -p123456
#创建元数据库
mysql>create database metastore;
mysql>quit;
(2)把MySQL的JDBC驱动拷贝到Hive的lib目录下(此处用的是MySQL8.0.33的驱动):
cd /opt/software/mysql-connector-j-8.0.33.jar /opt/module/hive/lib
(3)在$HIVE_HOME/conf下创建hive-site.xml文件:
vim hive-site.xml
#添加以下内容:
<?xml version="1.0"?><?xml-stylesheettype="text/xsl" href="configuration.xsl"?><configuration><!-- jdbc连接的URL--><!--主机名:端口号/数据库名 --><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value></property><!-- jdbc连接的Driver--><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.cj.jdbc.Driver</value></property><!--jdbc连接的username--><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property><!-- jdbc连接的password --><property><name>javax.jdo.option.ConnectionPassword</name><value>123456</value></property><!--Hive默认在HDFS的工作目录--><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property></configuration>
(4)初始化hive元数据库,改为用MySQL存储:
bin/schematool -dbType mysql -initSchema -verbose
2 验证元数据是否配置成功
(1)启动hive:
bin/hive
(2)使用hive:
hive> show databases;
hive> show tables;
hive> create table stu(id int, namestring);
hive> insert into stuvalues(1,"liao");
hive> select * from stu;
(3)在另外一个窗口开启hive,可以看到两个窗口都可以操作hive,没有异常:
hive>show databases;
hive>show tables;
hive>select * from stu;
3 查看MySQL中的元数据
(1)登录MySQL:
mysql -u root -p123456
(2)查看元数据库metastore:
mysql> show databases;
mysql> use metastore;
mysql> show tables;
(i)查看元数据中存储的库信息,hive中默认有default数据库:
mysql>select * from DBS;
(ii)查看元数据中存储的表信息,TBLS中保存了在hive中创建所有表的信息,创建的表的根目录等信息保存在SDS表中:
mysql>select * from TBLS;
(iii)查看元数据中存储的列相关信息,保存创建表的字段的信息:
mysql>select * from COLUMNS_V2;
版权归原作者 阿宁呀 所有, 如有侵权,请联系我们删除。