@
实际数据的存储
Hive要分析的数据是存储在HDFS上
hive中的库的位置,在hdfs上就是一个目录!
hive中的表的位置,在hdfs上也是一个目录,在所在的库目录下创建了一个子目录!
hive中的数据,是存在在表目录中的文件!
分隔符
表在创建时,有分隔符属性,这个分隔符属性,代表在执行MR程序时,使用哪个分隔符去分割每行中的字段!
查看表(实际在HDFS中也是一个文件)中的所有内容(包括分隔符):
cat -T 文件名
也可以在创建表的同时, 声明文件分隔符为\t,比如
create table student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED
BY '\t';
==hive中默认字段的分隔符: ctrl+A。进入编辑模式,ctrl+V 再ctrl+A==
元数据的存储
hive中的元数据(schema)存储在关系型数据库默认存储在derby中
derby是使用Java语言编写的一个微型,常用于内嵌在Java中的数据库!
derby同一个数据库的实例文件不支持多个客户端同时访问!
当你在某个目录下启动Hive时,就会在当前目录下生成一个这样的文件,用来存放元数据。你退出之后换个目录启动Hive,就找不到建立的库和表了,必须回到原目录启动。所以不建议使用derby。
建议将hive的元数据存储在Mysql中
Mysql支持多用户同时访问一个库的信息!
注意事项:
①metastore库的字符集必须是latin1
②5.5mysql,改 binlog_format=mixed | row默认为statement
mysql的配置文件: /etc/my.cnf
安装MySQL
先检查是否安装过MySQL,如果是在centos7下,默认安装了MariaDB,也需要卸载。
查看安装的MySQL和MariaDB列表:
rpm -qa | grep mysql
rpm -qa | grep MySQL
rpm -qa | grep mariadb
如果有安装过,比如:
卸载:
sudo rpm -e --nodeps mysql-libs-5.1.73-7.e16.×86_64
sudo rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
注意,需要删除/var/lib/mysql目录!
重点来了,安装mysql
由于是zip包,要用unzip命令解压
unzip mysql-libs.zip -d /op/module/
解压后:
在centos7下,可能安装失败,需要事先安装autoconf库
sudo yum -y install autoconf
然后安装服务端和客户端
sudo rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm
sudo rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm
最后出现这些信息,则表示安装成功!
需要注意这一段话
为root用户生成了一个随机密码,保存在/root/.mysql_secret文件中,需要自己去查看。
sudo cat /root/.mysql_secret
启动MySQL
sudo service mysql start
然后登陆进去:
mysql -uroot -pur2QYhY70kZECdC9
第一次登陆,只能先改密码,不能查看数据库
修改密码,要使用password()函数加密!
SET PASSWORD=password('12456');
查看有哪些用户,刚才改密码的用户只是Localhost
把除了localhost的用户都删掉
drop user root@'hadoop102';
drop user root@'127.0.0.1';
drop user root@'::1';
把host改成%。这样方便使用主机名登陆,也可以在windows上使用sqlyog等可视化工具登陆
update user set host='%' where user='root';
然后重启MySQL,使用主机名登陆
sudo service mysql restart
使用navicat连接