本质(是什么)

本质:将HQL、SQL转换成MapReduce程序
hive处理的数据 存储在HDFS上
hive分析数据的底层原理是mapReduce
hive执行程勋运行在yarn上

作用(干什么)

可以将海量结构化的数据文件映射为一张表,并提供类sql查询功能
常用于数据分析

架构(有什么)

hive 数据仓库
或者看图:
hive 数据仓库
如图: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元数据
包括:表名、表所属的数据库、表的拥有者、列/分区字段、表的类型(内部、外部表)、表的数据所在目录等。

优缺点

优点

  1. 开发容易、快:采用类sql语法;
  2. 开发成本低:避免了写MapReduce
  3. 适合处理大数据:适合应用在延迟性比较大的、时效性低的场景,
  4. 比较灵活:支持自定义函数,用户可以可以根据自己的需求实现自己的函数

缺点

  1. HQL表达能力有限:迭代式算法无法实现、数据挖掘方面不擅长
  2. 效率低:生成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、表的数据类型

hive 数据仓库

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上的

异议

有差错或者需要补充的地方,还望大家评论指出,并详细论证,相互学习,共同进步哈!

相关文章: