Fork me on GitHub

Hive 存储和压缩结合

创建一个非压缩的的ORC存储方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(1)建表语句
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");
(2)插入数据
insert into table log_orc_none select * from log_text ;
(3)查看插入后数据
dfs -du -h /user/hive/warehouse/log_orc_none/ ;

  7.7 M /user/hive/warehouse/log_orc_none/000000_0

创建一个SNAPPY压缩的ORC存储方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(1)建表语句
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");
(2)插入数据
insert into table log_orc_snappy select * from log_text ;
(3)查看插入后数据
dfs -du -h /user/hive/warehouse/log_orc_snappy/ ;

  3.8 M /user/hive/warehouse/log_orc_snappy/000000_0

上一节中默认创建的ORC存储方式,导入数据后的大小为

  2.8 M /user/hive/warehouse/log_orc/000000_0
  比Snappy压缩的还小。原因是orc存储文件默认采用ZLIB压缩。比snappy压缩的小。

存储方式和压缩总结:

  在实际的项目开发当中,hive表的数据存储格式一般选择:orc或parquet。压缩方式一般选择snappy。

-----------------本文结束,感谢您的阅读-----------------