一.简介:
① Hive是数据仓库 ;
② 将数据存放在 HDFS上, 元数据(MetaStroe)存放在 MySql上 (解决多用户共同操作Hive仓库问题);
③ 将 SQL 转换成 MapReduce ,在Hadoo集群上执行。但并非所有的 SQL都会转换成 MR ,eg. select * from tableName 就不需要,只需要把所有的数据都读出来就可以了读出10条也是如此
④ 使用 UDF 自定义函数 实现具体业务。
二. MySql安装 , 存储 MetaStore
问题:在哪里执行 hive 命令,在哪里创建元数据库。
hive-1.2.1目录下执行Hive:
[root@ming01 hive-1.2.1]# ls
bin derby.log hcatalog LICENSE NOTICE RELEASE_NOTES.txt
conf examples lib metastore_db README.txt scripts
hive> [root@ming01 TData]# ls
derby.log metastore_db student.txt
MySql 安装: 解决上述问题
1.删除Linux安装时,安装的 MySql 包
rpm -qa | grep mysql //查找 rpm 包
rpm -e mysql-libs-5.1.73-5.el6_6.x86_64 –nodeps //删除Linux 安装时 ,自动安装的 MySql 包
2.安装服务端:
rpm -ivh MySQL-server-5.5.48-1.linux2.6.x86_64.rpm
//安装MySql 服务端
3.安装客户端:
rpm -ivh MySQL-client-5.5.48-1.linux2.6.x86_64.rpm
//安装 Client
4.启动 MySql 服务:
service mysql start
5.设置root用户的密码:
/usr/bin/mysql_secure_installation (安装时提示的命令)
6.使用 mysql 进入命令行
mysql -rroot -proot
7.hive-site.xml 中配置 HIve 的元数据仓库为MySql
三.Hive 仓库操作: (本文不介绍Hive安装)
3.1.创建表(MANAGED_TABLE):
默认在 HDSF 中的位置:hdfs://ns1/user/hive/warehouse/t_user
①需指定分隔符,也可以使用默认)
②如果表被删除,数据也 表目录下 的数据也将被删除
hive> create table student(id int , name string)
> row format delimited fields terminated by '\t';
//向 Hive 中添加数据:(一般都是以文件的形式 Load)
load data local inpath '/cluster/TData/student.txt' into table student;
3.2.创建外部表(EXTERNAL_TABLE):
可以直接讲文件放入HDFS 上的目录,执行SQL语句时,会自动扫描。
默认在 HDFS 中的位置:hdfs://ns1/data
hive> create external table peoples (id bigint , name string , age int , description string )
> row format delimited fields terminated by '\t' location '/data' ;
hive> dfs -put /cluster/user.txt /data/a.