【Hive笔记】8.3——Hive主流文件存储格式对比实验

每种存储格式都有自己的用处,这里从存储文件的压缩比和查询速度两个方面对比

存储文件压缩比测试

测试数据为18.1M的日志文件。

  1. TextFile格式
    (1) 创建表,存储格式为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 ;
    
    结果截图:在这里插入图片描述
    (2) 导入数据
    load data local inpath '/opt/module/datas/log.data' into table log_text ;
    在这里插入图片描述
    (3) 查看数据大小
    dfs -du -h /user/hive/warehouse/log_text;
    显示的是18.1M 在这里插入图片描述
  2. ORC格式
    (1) 建表语句
    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 ;
    
    (2) 导入数据
    导入数据不能直接使用load data local ,否则还是一个18M的文件,使用insert 才会是orc格式。
    insert into table log_orc select * from log_text;
    在这里插入图片描述
    (3) 查看数据大小
    dfs -du -h /user/hive/warehouse/log_orc;
    可以看到是2.6M,相比较textFile小了很多
    在这里插入图片描述
  3. Parquet 格式
    (1) 建表语句
    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 ;	
    
    
    (2) 导入数据
    导入数据不能直接使用load data local ,否则还是一个18M的文件,使用insert 才会是orc格式。
    insert into table log_parquet select * from log_text;
    在这里插入图片描述
    (3) 查看数据大小
    dfs -du -h /user/hive/warehouse/log_orc;
    是13.1M,相比较ORC压缩效率没有呢么高
    在这里插入图片描述
    所以存储文件的压缩比总结:
    ORC > Parquet > textFile
存储文件的查询速度测试

执行语句都是为select count(*) from log_XXX; 每次查询三次记录查询时间

  1. TextFile
select count(*) from log_text

100000
Time taken: 47.122 seconds, Fetched: 1 row(s)
100000
Time taken: 28.92 seconds, Fetched: 1 row(s)
100000
Time taken: 27.693 seconds, Fetched: 1 row(s)
  1. ORC
select count(*) from log_orc

100000
Time taken: 25.844 seconds, Fetched: 1 row(s)
100000
Time taken: 28.264 seconds, Fetched: 1 row(s)
100000
Time taken: 27.214 seconds, Fetched: 1 row(s)
  1. Parquet
select count(*) from log_parquet

100000
Time taken: 35.83 seconds, Fetched: 1 row(s)
100000
Time taken: 26.94 seconds, Fetched: 1 row(s)
100000
Time taken: 27.853 seconds, Fetched: 1 row(s)

结果就是查询速度是相近的,但是存储orc占据优势,所以orc格式比较流行。

ORC的格式压缩

其实在ORC格式是自带有压缩的(ZLIB压缩),而且比snappy压缩的小,所以我们在使用ORC的时候可以使用自带的格式。

但是在hadoop压缩格式类型中没有ZLIB格式,所以一般都是搭配其他压缩格式。
在创建orc文件格式的时候可以指定压缩格式:

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");

tblproperties (“orc.compress”=“SNAPPY”); 可以指定压缩格式,当然也可以取消压缩 tblproperties (“orc.compress”=“NONE”);

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值