Hive详解

一、Hive的特点
1.基本特点
在这里插入图片描述
(1)可扩展(计算和存储都可以扩展)
(2)关系式(跟传统关系型数据库类似)
(3)SQL语言为查询接口
(4)为OLAP设计(Online Analytical Processing)
2.传统关系式数据库 VS Hive
在这里插入图片描述
二、Hive数据单元
Databases
Tables:
内部表:数据和表的定义绑定
外部表:数据和表的定义分开,删除表,数据仍然存在
Views:视图
Columns:列
Partitions:分区
Buckets:
(1)Databases
1)命名空间功能
2)防止表名、视图名、列名以及分区名重复
3)权限控制(限制某一些用户的访问权限)
在这里插入图片描述
(2)Table
(Internal Table +External Table,主要用External Table,dop表时,Internal Table会全部删除,而External只删除表的元数据)
存储数据的表达方式
关系式
列+记录
在这里插入图片描述
partition进行分区可以方便后续查询,当列用于partition时不用放到建表的属性里(如图蓝色实线);
comment 为对表的描述
建表时建议指定location : 路径名称建议:’/user/hive/库名(database_a)/表名(student)
(2)View
基于表创建的视图
简化SQL数据查询语句
提高数据的逻辑独立性
提高数据的安全性
在这里插入图片描述
View逻辑性不能太复杂,耗时不能太久。
(3)Columns
表的属性
每一列都有具体的类型
Partitions
表的分区
更好的存储和查询数据
在这里插入图片描述
(4)buckets(分桶)
更细致的划分
可以对分区的数据进行划分
可以进行表的抽样
在这里插入图片描述
分桶时记得设置:hive.enforce,bucketing=true
桶的个数从1开始计数。因此前面的查询从4个桶的第一个中获取所有的用户。
三、Hive数据存储格式
数据存储在HDFS或者云文件系统
textfile(定义分隔符)
csv(定义分隔符)
parquet/orc(列式存储)
在这里插入图片描述
四、表数据类型
在这里插入图片描述
TIMESTAMP:
UTC时间
距离UNIX新纪元(1970年1月1日午夜12点的时间)
转化成当地时间
北京时间(+8小时)
在这里插入图片描述
五、Hive SQL
Hive 数据库查询语言
DDL (Data Definition Language)数据定义语言
DML(Data Manipulate Language)数据操作语言
DQL (Data Query Language) 数据查询语言
[https://cwiki.apache.org/confluence/display/Hive/LanguageManual]((https://cwiki.apache.org/confluence/display/Hive/LanguageManual)
(1)DDL
1)数据库管理
show databases
create database (if not exists) database_a
drop databae (if exists)database_a (cascade) cascade强制删除
use database_a(切换)
describe(desc) database_a
alter database database_a set location ‘hdfs://master-sever/user/hive/database_a’ (改变数据库地址)
2)数据表管理
show tables from database_a(use database_a;show tables)
describle(desc) table database_a.table_a
drop table (if exists) database_a.table_a(外部表时只删metadata)
show create table database_a.table_a (显示表的一些属性信息)
创建表
在这里插入图片描述
也可以通过已有的表创建
在这里插入图片描述
更新表信息
在这里插入图片描述
(2)DML
将文件关联到表load
在这里插入图片描述
插入数据
在这里插入图片描述
更新数据和删除数据
在这里插入图片描述
建议操作:
使用load,insert overwrite
避免使用update,delete 和insert into 等操作
大数据一般不会对数据单行更新,单行更新时建议对整个分区重写(delta)
Hive一般不会删除数据,元数据和真实数据分开存储
对于insert into等操作,也一般建议对整个分区重写
(3)DQL
在这里插入图片描述
在这里插入图片描述
情景3应该是:select gender,sum(math) from exam_db.student_exam group by gender
情景4应该是:select class,max(math) from exam_db.student_exam group by class having max(math)>90 order by class
情景5应该是:select class,max(math) from exam_db.student_exam where gender=‘female’ group by class having max(math)>90 order by class

left join:
在这里插入图片描述
[inner] join
在这里插入图片描述
right join
在这里插入图片描述
full join
在这里插入图片描述
六、Hive SQL常见函数
show functions(列举出Hive中常见的函数)
describe function function_name(函数的具体信息)
describe function extended function_name
常见函数链接:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
(1)窗口函数
LAG (col,n,default)用于统计窗口内往上第n行的值(default表示无值时设置为多少,默认为null)
LEAD (col,n,default)用于统计窗口内往下第n行的值(default表示无值时设置为多少,默认为null)
在这里插入图片描述
在这里插入图片描述
FIRST_VALUE(col,boolean):获取排序后的第一个数,第二个参数是个布尔类型,表示是否跳过null值,默认为default
LAST_VAULR(col,boolean):获取排序后的最后一个数,第二个参数是个布尔类型,表示是否跳过null值,默认为default
在这里插入图片描述
RANK()
ROW_NUMBER()
DENSE_RANK()
区别主要在于排序时序号的定义不同,具体见下表
在这里插入图片描述
2.UDF(User Defined Function)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值