博客 Hive的表操作7

Hive的表操作7

   数栈君   发表于 2023-07-07 11:11  174  0

一、Hive的压缩方式
1、Hive底层默认是MaReduce,Hive的压缩实际上就是MapReduce的压缩
2、MapReduce压缩分为Map端结果文件压缩和Reduce端结果文件压缩

use myhive;
-- 开启Map输出阶段压缩
set hive.exec.compress.intermediate=true;
set mapreduce.map.output.compress=true;
set mapreduce.map.output.compress.codec= org.apache.hadoop.io.compress.SnappyCodec;
select count(1) from covid2;

-- 开启Reduce输出阶段压缩
-- 1)开启hive最终输出数据压缩功能
-- 2)开启mapreduce最终输出数据压缩
-- 3)设置mapreduce最终数据输出压缩方式
-- 4)设置mapreduce最终数据输出压缩为块压缩
set hive.exec.compress.output=true;
set mapreduce.output.fileoutputformat.compress=true;
set mapreduce.output.fileoutputformat.compress.codec = org.apache.hadoop.io.compress.SnappyCodec;
set mapreduce.output.fileoutputformat.compress.type=BLOCK;
-- 5)测试一下输出结果是否是压缩文件

insert overwrite local directory '/export/data/compress'
select * from covid2 ;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

输出格式就成了snappy。
常用的压缩方式


二、Hive的存储格式

行存储:TextFile: 默认的文本存储,SequenceFile。

列存储:ORC,PARQUET。

1、注意,我们以后几乎所有的表存储都是列存储,因为列存储更符合我们的需求
2、我们项目中使用的列存储时ORC格式
3、一般的列存储在内部会有一些索引,可以提高查询的效率

-- TEXTFILE格式,默认格式,通过STORED AS
create table log_text (
track_time string,
url string,
session_id string,
referer string,
ip string,
end_user_id string,
city_id string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE ;

-- TEXTFILE 表文件的大小是: 18.13M
load data local inpath '/export/data/hivedatas/log.data' into table log_text ;
select * from log_text;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- 存储数据格式为ORC,ORC自带压缩,默认压缩算法是ZLIB
create table log_orc(
track_time string,
url string,
session_id string,
referer string,
ip string,
end_user_id string,
city_id string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS orc ;

-- ORC表文件的大小是: 2.78M
insert into table log_orc select * from log_text ;
select * from log_orc;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- 存储数据格式为parquet
create table log_parquet(
track_time string,
url string,
session_id string,
referer string,
ip string,
end_user_id string,
city_id string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS parquet ;

-- PARQUET表文件的大小是: 13.09M
insert into table log_parquet select * from log_text ;
select * from log_parquet;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
三、压缩方式和存储格式结合
理论上Hive支持的任何一个存储格式都可以和hive支持的任何一个压缩方式进行结合。

-- 使用纯ORC,不使用任何的压缩算法
create table log_orc_none(
track_time string,
url string,
session_id string,
referer string,
ip string,
end_user_id string,
city_id string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS orc tblproperties ("orc.compress"="NONE");

insert overwrite table log_orc_none select * from log_text;
文件的大小是: -- 7.69M
select * from log_orc_none ;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- 使用ORC,使用SNAPPY压缩算法
create table log_orc_snappy(
track_time string,
url string,
session_id string,
referer string,
ip string,
end_user_id string,
city_id string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS orc tblproperties ("orc.compress"="SNAPPY");

insert overwrite table log_orc_snappy select * from log_text;
文件的大小是: -- 3.75 MB
select * from log_orc_snappy ;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- 使用parquet,使用SNAPPY压缩算法
create table log_parquet_snappy(
track_time string,
url string,
session_id string,
referer string,
ip string,
end_user_id string,
city_id string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS parquet tblproperties ("parquet.compress"="SNAPPY");


insert overwrite table log_parquet_snappy select * from log_text;
文件的大小是: -- 13.09 MB
select * from log_parquet_snappy ;

免责申明:

本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!

《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu

《数栈V6.0产品白皮书》下载地址:
https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:
https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:
https://github.com/DTStack

0条评论
上一篇:Hive的表操作8
下一篇:
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群