@
目录
- 实际数据的存储
- 分隔符
- 元数据的存储
- 安装MySQL
实际数据的存储
- Hive要分析的数据是存储在HDFS上
- hive中的库的位置,在hdfs上就是一个目录!
- hive中的表的位置,在hdfs上也是一个目录,在所在的库目录下创建了一个子目录!
- hive中的数据,是存在在表目录中的文件!
分隔符
表在创建时,有分隔符属性,这个分隔符属性,代表在执行MR程序时,使用哪个分隔符去分割每行中的字段! 查看表(实际在HDFS中也是一个文件)中的所有内容(包括分隔符):
代码语言:javascript复制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列表:
代码语言:javascript复制rpm -qa | grep mysql
rpm -qa | grep MySQL
rpm -qa | grep mariadb
如果有安装过,比如:
卸载:
代码语言:javascript复制 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命令解压
代码语言:javascript复制unzip mysql-libs.zip -d /op/module/
解压后:
在centos7下,可能安装失败,需要事先安装autoconf库
代码语言:javascript复制sudo yum -y install autoconf
然后安装服务端和客户端
代码语言:javascript复制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文件中,需要自己去查看。
代码语言:javascript复制sudo cat /root/.mysql_secret
启动MySQL
代码语言:javascript复制sudo service mysql start
然后登陆进去:
代码语言:javascript复制mysql -uroot -pur2QYhY70kZECdC9
第一次登陆,只能先改密码,不能查看数据库
修改密码,要使用password()函数加密!
代码语言:javascript复制SET PASSWORD=password('12456');
查看有哪些用户,刚才改密码的用户只是Localhost
把除了localhost的用户都删掉
代码语言:javascript复制drop user root@'hadoop102';
drop user root@'127.0.0.1';
drop user root@'::1';
把host改成%。这样方便使用主机名登陆,也可以在windows上使用sqlyog等可视化工具登陆
代码语言:javascript复制update user set host='%' where user='root';
然后重启MySQL,使用主机名登陆
代码语言:javascript复制sudo service mysql restart
使用navicat连接