HIve文件存储格式和压缩总结

1、存储格式

(1)Hive支持的存储数据的主要格式

行式存储:TEXTFILE SEQUENCEFILE

列式存储:ORCPARQUET

存储的特点:

查询满足条件的一整行数据的时候,列存储则需要去每个聚集的字段找到对应的每个列的值,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询的速度更快。

列式存储的特点:

因为每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量;每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的设计压缩算法。

(2)存储格式设置

创建表,存储数据格式为TEXTFILE

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 ;

创建表,存储数据格式为ORC

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 ;

创建表,存储数据格式为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 ;	

(3)存储文件的压缩比总结

ORC >  Parquet >  textFile

2、压缩方式

(1)查看hadoop支持的压缩方式

hadoop checknative

(2)安装Snappy

将将编译好的支持Snappy压缩的hadoop-2.7.2/lib/native里面的所有内容复制到开发集群的hadoop-2.7.2/lib/native路径上

分发集群

xsync native/

重新启动hadoop集群和hive

(3)压缩与存储格式的结合使用

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

create table log_orc_none(
track_time string,
url string,
)
row format delimited fields terminated by '\t'
stored as orc tblproperties ("orc.compress"="NONE");

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

create table log_orc_snappy(
track_time string,
url string,
)
row format delimited fields terminated by '\t'
stored as orc tblproperties ("orc.compress"="SNAPPY");

(4)存储方式和压缩总结

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

猜你喜欢

转载自blog.csdn.net/QJQJLOVE/article/details/107029170