1、存储格式
(1)Hive支持的存储数据的主要格式
行式存储:TEXTFILE 、SEQUENCEFILE
列式存储:ORC、PARQUET
行式存储的特点:
查询满足条件的一整行数据的时候,列存储则需要去每个聚集的字段找到对应的每个列的值,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询的速度更快。
列式存储的特点:
因为每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量;每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的设计压缩算法。
(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。