# #数据库与数据仓库
数据库:mysql,roacle,sqlserve,DB,MDB,...
数据仓库:Hive,是MR的客户端,也就是说不必要每台机器都安装部署Hive
- Hive的特性
1)操作接口是采用SQL语法,HQL;
2)避免乐写MapReduce的繁琐过程
- Hive 体系结构
1·Client
**终端命令行
**JDBC--不长使用,非常麻烦(相对于前者)
2.metastore
**原本的数据集集和字段名称以及数据信息之间的双射关系
**目前是存储在Mysql
3.Server-Hadoop
**在操作Hive的同时,需要将Hadoop的HDFS开启,YARN开启,MAPRED配置好
创建表: create table ss(name string,id int,date string) row format delimited fileds terminated by '\t'
导入数据:load data local inpath '路径' into table 库名.表名
内部表与外部表(inner,external):
drop
内部表删除表数据时,连同数据源及元数据信息同时删除
外部表:只会删除元数据信息,共享数据外部表相对而言方便和安全
相同点:
如果你导入数据时,操作与HDFS上,则会将数据进行迁移,并在metastire留下记录,而不是copy数据源
Hive分区表
创建分区表:
前面一样 partitioned by (date string,hour string)--分区表的分区字段以逗号分隔
row format delimited fields terminated by '\t'
导入数据到分区表
load data local inpath '路径' into table 库名.表名 partition(date='具体值',hour='具体值')
查询分区表数据:
select url from table
where date = '201808021'
case使用(聚合函数,group by等)
**select ename,
case
when sal<1000 then "lower"
when sal>=1000 and sal<2000 then 'mid'
else 'high'
end
from table**
hive操作HQL语句的两个参数
hive -e ""
hive -f 文件.hql
bin/hive 本地的
HiveServer2
# #Sqoop