Hive
2023-07-20 15:40:49 0 举报
AI智能生成
登录查看完整内容
数仓,hive
作者其他创作
大纲/内容
lzo
snappy
压缩
TextFile
SEQUENCEFILE
行存储
ORC
parquet
列存储
存储
压缩和存储
show functions;
简单的描述
desc function year;
详细的,有案例的描述
desc function extended year;
289个
空字段赋值
case
分支主题
'123'
string | array(string)
去重汇总
select collect-set(deptno) from emp;
collect_set()
行转列
一列
array
两列
map
explode(array | map)
返回值--》 array
lateral view
列转行
从起点开始
unbounded preceing
直到终点边界
unbouded following
向前n行
n preceing
向后n行
n following
当前行
current row
window
partition by
order by
over()
开窗函数
1,2,2,4
可重复总数不变
Rank()
1,2,2,3
可重复,总数减少
dense_rank()
1,2,3,4
不可重复
row_number()
常用内置函数
public ObjectInspector initialize(ObjectInspector[] arguments) throws UDFArgumentException { // 1. 判断输入参数的个数 // 2. 判断输入参数的类型 // 3. 返回返回值类型鉴别器对象 }
public Object evaluate(DeferredObject[] arguments) throws HiveException { // 1. 判断参数是否为null // 2. 计算参数的长度,并返回 }
继承GenericUDF实现其方法
自定义函数
函数
本质:分的是文件夹
继续分:二级分区
分区字段和表的字段关系
分区表
本质:分的是文件
分桶表
查询分区分桶表的时候,使用where对分区分桶进行过滤
分区表和分桶表
select * from student;
查询全表及特定字段
列的别名
提高查询效效率
表的别名
算数运算符
select * from emp where sal > 1000 and deptno =30;
AND
select * from emp where sal >1000 or deptno=30;
OR
NOT
逻辑运算符
count(*)
max()
min()
avg()
sum()
常用函数
select * from emp limit 5;
limit 语句
查询过滤的作用
select * from emp where sal >1000;
where 后不能使用列的别名
where 语句
A<=>B
select * from emp where sal betwenn 1000 and 5000;
A [not] between B and C
is null
is not null
select ename from emp enam like 'A%';
简单的正则表达式,通配符模式
like
select ename from emp ename rlike '^A';
完全的正则表达式--java
rlike
比较运算符
基本的查询
计算emp表中每个部门的平均薪资
group by
计算emp表中每个部门平均薪资大于2000的有哪些
having
分组
join
inner join
内连接
这个如何实现
left join
左外连接
right join
右外连接
full join
满外连接
多表连接
连接条件缺少,写了和没写一样
笛卡尔积
order by
只有一个Reduce
全局排序
在每个Reduce进行排序
分区内有序全局无序
单独使用,分区规则是什么,随机
sort by
分区排序的排序
按照指定的分区字段进行分区
分区规则:分区字段.hash % num_reduce
distribute by
分区排序的分区
分区排序
分区排序种分区字段和排序字段相同时,可以使用
cluster by 仅支持升序排序,不支持自定义,desc 或asc
cluster by
排序
查询
本地(当前节点)
local
HDFS
没有local
load
insert into tableName select * from table1 ;
insert
hdfs -put
as select* from table_name;
数据导入(4)
数据导出到本地
数据导出到hdfs
insert ---- directory
数据导出
export
import
元数据和真实数据
数据迁移
DML数据操作语言
hive是基于hadoop的数据仓库工具,提供了类SQL语言便于查询计算
本质:将HQL转换MapReduce程序
概念
基本架构图:
提供了HQL,一种SQL方言
hive
标准SQL
数据库
查询语句
基于Hadoop的,存储数据用hdfs, 计算引擎用MapReduce
支持大规模数据统计分析
数据规模相对较小
Mysql---》 innodB
数据规模
不建议对数仓数据进行更新
存储底层框架HDFS,不支持随机修改
数据规模大
对用与多读少写场景,多存储静态数据
多用于在线应用
可以实现高效的随机更新
数据的更新
查询延迟较高
计算引擎MapReduce,部署执行依赖yarn集群
延迟高,辩证来看待,hive可以支持大规模数据
延迟低
数据数据量有限
数据的延迟
hive与数据库的对比
int
bigint
float
double
string
boolean
基本数据类型
friend[0]
friend array<String>
children["key"]
address.city
struct
集合数据类型
3.0
select "1" + 2;
3
select cast("1" as int) +2;
数据类型转换
数据类型
create database bigdata [location ] [with dbproperties("key" ="value")]
创建
alter database bigdata set dbproperties("key" = "value")
修改
show databases;
show database like "big*";
desc database [extended] bigdata;
drop database bigdata [cascade]
删除
中件表、结果表
内部表:
元数据
共享的数据、最初始的数据
外部表:
alter tale table_name change [column] col_0ld_name col_new_name col_type [first | after col_name]
更新列
alter table table_name replace columns( id string);
添加替换列
drop table table_name;
truncate table table_name
清空表只能对内部表使用
清空表
表
DDl数据定义语言
Hive
0 条评论
回复 删除
下一页