接上文☝️☝️☝️
一、表的分区
意义:大数据开数据量较大,在进行数据查询计算时,需要对数据进行拆分,提升的查询速度
1、分区表的种类
单个分区
多个分区
2、分区表的增删改查
- 查看分区表的分区信息 show partition 表名
- 生成分区数据信息 通过insert数据导入,生成对应的数据
通过ADD方法直接指定分区,指定后会在对应表目录下生成分区目录
alter table 表名 add partition(字段名=)
- 修改分区名称 alter table 表名 partition (旧字段名=) rename to partition (新字段名)
- 删除分区 alter table 表名 drop partition (字段名=)
二、表的分桶
区别:
分区:将数据拆分不同目录下存储
分桶:将数据拆分不同文件进行存储
使用分桶时=
clustered by(字段) into 桶数量 buckets row format delimited fields terminated by ','
插入原始数据表的数据写入到分桶表
insert into 表名 select *
三、数据文件的读取和写入
1、默认化序列器
字段的处理方法 fields terminated by
数组的处理方法 collection items terminated by
Map的处理方法 map keys terminated by
语句处理:
select split(字段,'-')
select 'map'('name',split(hobby,'-')[0])
在进行表定义时指定row format delimited
这几个方法主要对文件数据读取时,方便区分不同数据内容
2、自定义序列化器
可以使用自定义序列化器中提供jar包完成对json数据的处理
可以将json文件中的数据key最为字段,将value值解析为对应的行数据
row format serde 'org.apache.hive.hcatalog.data.JsonSerDe';
四、内置函数
1、定义
是hive提供的函数方法,方便对不同类型的字段数据进行操作
2、字符串操作函数
计算字符串长度 length()
字符串拼接 concat( , )
字符串切割 split(字段,'-') 再用下标取值
字符串截取 substr(字段,1(从一开始),4(四个字符))
字符串替换 regexp_replace(字段,'-','/')
去除前后空格 trim
3、 数值操作函数
- * / %(取余)
向上取整 ceil
向下取整 floor
次方计算 pow
4、条件判断
1、单条件判断 if()
2、多条件判断 case
when then
end as
3、判断是否为空: nullif(字段1,字段2) 如果相等返回null 不相等返回字段1