目录(hive)
本质(是什么)
本质:将HQL、SQL转换成MapReduce程序
hive处理的数据 存储在HDFS上
hive分析数据的底层原理是mapReduce
hive执行程勋运行在yarn上
作用(干什么)
可以将海量结构化的数据文件映射为一张表,并提供类sql查询功能
常用于数据分析
架构(有什么)
或者看图:
如图:hive的角色:client、driver、metastore三部分
1、client用户接口
CLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问hive)(弃用 )
2、driver驱动器
a、SQL parser 解析器:将sql字符串转换成抽象语法书树ast
b、physical plan 将ast编译成逻辑执行计划
c、query optimizer 优化器对逻辑执行计划进行优化
d、execution执行器:把逻辑执行计划装换成可以运行的物理计划。(对hive来讲就是:mr/spark)
3、metastore元数据
包括:表名、表所属的数据库、表的拥有者、列/分区字段、表的类型(内部、外部表)、表的数据所在目录等。
优缺点
优点
- 开发容易、快:采用类sql语法;
- 开发成本低:避免了写MapReduce
- 适合处理大数据:适合应用在延迟性比较大的、时效性低的场景,
- 比较灵活:支持自定义函数,用户可以可以根据自己的需求实现自己的函数
缺点
- HQL表达能力有限:迭代式算法无法实现、数据挖掘方面不擅长
- 效率低:生成MapReduce作业(比较慢)、调优比较难(颗粒粗)
流程(怎么运作)
hive的知识比较散,底层运行的MapReduce作业。流程不讲述。。。
知识大致分类为:DML(操作数据)、DDL(操作元数据、表。。。。)
DML
1、增(4种方式)
- load data local inpath overwrite/into table tablename (partition)
- from …insert overwrite/into table tablename select …
- insert into table values()
- insert into local directory dic… select-statement
2、删改(需要配置事务)
配置事务有限制:
rollback、commit不支持
必须是orc的文件格式
表必须被分桶
默认事务是不开启的
DDL
DDL内容主要分为:创建数据库、创建表(内部、外部表)、分区、分桶、视图、索引、函数,共7部分梳理
创建数据库
create database 数据库名称
创建表
1、表的数据类型
2、建表语句
1、create table tablename(col dateType…) row format dilimited fields terminated by ‘’ collection items terminated by ‘’ map keys terminated by ‘’| serde(正则)
2、create table tablename as select_statement(表结构和数据)
3、create table tablename like tablename(只有表结构)
常用(必会)
1、hive的基本操作
启动hive: bin/hive
查看数据库: show databases
打开默认数据库: use defsult
显示数据库的表: show tables
创建一张表:create table student (id int , name string)
显示tablename的描述结构:desc tablename
插入数据: insert into student (1001,’小明‘)
查询表中数据: select * from table
退出hive : quit
常见问题(必知)
1、数据库和数据仓库有什么区别?
- 数据库用于支撑业务系统的交互查询;hive用于离线业务插叙
- 数据库的数据是维持更新;hive会把历史数据全部保留下来,形成一个时间拉链数据
- 数据库存储的是单一系统的数据;hive是将多种数据源的数据规整到一起
2、hive数据的存储位置
因为hive是建立在Hadoop之上的,数据是存在hdfs上的
异议
有差错或者需要补充的地方,还望大家评论指出,并详细论证,相互学习,共同进步哈!