HIVE总结

1.Hive架构设计概念

user interface :hive cli,hive client,hwi 	
Hive CLI(hive command line interface):Hive命令行交互模式,默认支持 
Hive Client(jdbc/odbc/beeline):Hive jdbc交互模式,外部程序或者服务对接的必选项 
HWI (hive web interface):Hive web交互模式,cli模式的补充 	
HiveServer2:以Thrift为基础实现的跨语言的接口调用,并支持多客户端的并发和认证 	
Driver (SQL Parser Query Optimizer Excution):Hive核心驱动器接口类,衔接UI与内核的解析、优化、执行器的桥梁 	
MetaStore (Mysql,Derby):Hive元数据存储,包括库、表、分区、可嵌入式、本地、远程独立部署

2.Hive运行流程:

(Hive CLI,Hive Client-->HiveServer2,HWI) -->Driver <-->MetaStrore

在这里插入图片描述

3.Hive是构建再hadoop上的数据仓库框架,解决了非开发人员使用hadoop的问题,Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。本质是将HQL转换为MapReduce程序(可以看做对MapReduce的封装)

4.Hive非常适合数据仓库中,对时延要求不那么敏感的场景。低时延的使用Hbase

5.Hive主要用于查询,不支持行级别的update和delete

6.传统仓库区别: Orcal 是单机, Hive基于HDFS分布式

7.读时模式:shema on read 为了更好的写入数据,在读的时候进行模式检查

8.写时模式:shema on write 为了更好的查,在写的时候进行模式检查

9.Hive meta data 2中存储方式: 内置Derby 有目录缺陷和单会话缺陷 Mysql

10.HQL语句不识别TAB分隔

11.元数据 metadata
原数据 original data
源数据 source data

12.Hive常用命令:

    1.执行Hadoop命令: dfs -ls /user/....
	2.执行linux命令:! ls /user/...
	3.Hive命令行中默认显示库名
		cd ~
		vi .hiverc
		set hive.cli.print.current.db=true; -->显示库名
		set mapred.job.name=hive-cli-01; -->显示job名

13.Hive数据模型: 库,表,分区,分桶

14.Hive表分类:

    分类1:内表(托管表,管理表):删除元数据,真实数据
		   外表(external):只删除元数据
	分类1使用场景:数据只为hive使用,建立内表
				   数据还可能给hive以外的程序使用,数据本身就是给hive以外的程序建立的使用,hive只是共享使用,使用外表
	分类2:普通表,分区表,分桶表,分区分桶表

15.Hive数据类型基本类型

数值(tinyint,smallint,int,bigint,float,double),string,boolean,timestamp,binary

16.Hive数据类型之复杂类型:array,map,struct

    1.select形式输入:
		select array(1,2,3);
		select map("a",1,"b",2);
		select struct(1,2)
	2.建表字段为复杂类型
		create table table_name (
		info_1 array<String>,
		info_2 map<String,String>
		info_3 struct<addr:string,mail:string>
		info_4 struct<col1:string,col2:string>
		)
		row format delimited
		fields terminated by ','
		collection items terminated by '::'
		map keys terminated by '\003';
	3.insert复杂类型
		insert into emp01 select 'tom',array('english','chinese') from dual;
		insert into userinfo select 'tom',map('type','chinese') from dual;  
		insert into userinfo select 'tom',struct('hebei','[email protected]','male') from dual;  
		(struct类型 不能轻易insert,必须字段名为:col1,col2,col3....)
	4.load复杂类型
		load data inpath '....' into table emp01; 
		load的时候注意原文件的分隔符等因素
	5.访问复杂类型
		select id, name[0], score['all'] , score['语文'], addr.province from demo;

17.Hive文件格式及压缩格式

    1.默认文件格式:textfile     面向行:txt,seq,面向列:rc,orc
	2.压缩格式:可切分:lzo,bz2 不可切分:snappy,gzip
	3.查看hive/hadoop中内置编码,解码
		set io.compression.codes;

18.压缩优缺点:

    优点:减少占用磁盘的空间,减小磁盘或者网络i/o,从而提高吞吐量和i/o性能
	缺点:增加cup开销

19.HQL DDL

    1.输入规范:
		CREATE, DROP, ALTER
		DESC <表名>;(DESCRIBE <表名>; 的简写)
		DESC FORMATTED <表名>;
		SHOW CREATE TABLE <表名>;
	2.修改表结构时,只是修改的结构,数据是不会变的,这里hive与MySQL不同,要注意
	3.根据某表结构创建另外一张表
		CREATE TABLE 表1名 LIKE 表2名
		INSERT INTO 表2名 SELECT *  FROM 表1名;
	4.修改表的名称
		ALTER TABLE 表旧名 RENAME TO 新名;
	5.给表添加字段
		ALTER TABLE 表名 ADD COLUMNS (字段名 字段类型);
	6.修改表的字段
		ALTER TABLE my_tbl_2 REPLACE COLUMNS (name string);
		ALTER TABLE my_tbl_2 REPLACE COLUMNS (id int, name string);
		ALTER TABLE my_tbl_2 REPLACE COLUMNS (id int, age int, salary double);
		ALTER TABLE my_tbl_2 REPLACE COLUMNS (id int, name string, salary double);

        ALTER TABLE my_tbl_2 CHANGE COLUMN id my_id int;
		ALTER TABLE my_tbl_2 CHANGE COLUMN id id int AFTER age;
		ALTER TABLE my_tbl_2 CHANGE COLUMN id id int FIRST;
	7.字段名是乱码的问题:
		因为Hive的元数据MySQL设置是latin。。。。
	8.建表模板(默认参数)
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值