hive学习笔记

1.OLAP离线计算,在线分析
2.HiveSQL,是类Sql语言
3.hive的表是存放在rdbms中的
4.hive处理的数据就是hdfs,hive在查询的时候通常会转换成mr,但不是所有的查询都会转成mr,比如全字段扫描,全表扫面,不加任何条件,就是全字段的读取,聚合查询需要转成mr

内部表,管理表,托管表

表和数据都是由hive进行管理的,在drop表的时候,表被删除了,那么数据也就没有了

外部表

hive只是维护表结构的,当删除表的时候,当删除表的时候数据还在,安全性比较高

分区表

分区就是目录。在创建表的时候可以指定分区,在查询的时候可以把分区映射成字段,可以缩小查询范围

桶表

桶表对应的是文件,桶表在建表的时候需要指定按照哪个表进行分桶clustered by 

union查询

联合查询,是竖直的,把多个表的数据叠加在一起返回
select id,name from customers union select id,orderno from orders ;

join查询

连接查询是水平的,把两个表或者多个表的记录合在一条记录上来返回

hive使用jdbc协议实现远程访问

$hive        //hive --service cli
$hive --service hiveserver2    //启动hiveserver2,10000,要实现beeline远程访问的话,就需要启动这个服务器
$hive --service beeline        //$hive>beeline

在hive中,大部分的操作都是sql操作

hive建表的语句

create table xxx(id int ,name string,age int) partitioned by(year int,month int) row format delimited fields terminated by ","

导出表数据

$export table customers to '/user/centos/tmp.txt'

//order by全排序
$hive>select * from orders order by id asc;//注意:一旦order by就会变成mr了 

//sort,map端排序,也就是本地有序
$hive>select * from orders sort by id asc;

 set hive.exec.reducers.bytes.per.reducer=<number>        //设置每一个reduce作业处理的字节数

 set hive.exec.reducers.max=<number>                            //设置reduce作业的最大任务数

set mapreduce.job.reduces=<number>                            //设置reduce的个数

//distribute by 类似于mysql的group by,进行分区操作。
$hive>select id,orderno,cid form orders distribute by cid sort by cid desc;

函数

mysql>select concat('tom',1000);

hive事务处理

1.使用事务性操作

$hive>set hive.support.concurrency=true;
$hive>set hive.enforce.bucketing=true;
$hive>set.exec.dynamic.partition.mode=nonstrict;
$hive>set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
$hive>set hive.comparator.initiator.on=true;
$hive>set hive.comparator.worker.threads = 1;

posted @ 2018-07-08 15:00  shizeqi  阅读(417)  评论(0编辑  收藏  举报