一、file format

ORCFile在HDP 2:更好的压缩,更好的性能:

https://zh.hortonworks.com/blog/orcfile-in-hdp-2-better-compression-better-performance/

官方ORCfile介绍:

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC

官方PARQUET介绍:

https://cwiki.apache.org/confluence/display/Hive/Parquet

  1. file_format:
  2. : SEQUENCEFILE
  3. | TEXTFILE -- (Default, depending on hive.default.fileformat configuration)
  4. | RCFILE -- (Note: Available in Hive 0.6.0 and later)
  5. | ORC -- (Note: Available in Hive 0.11.0 and later)
  6. | PARQUET -- (Note: Available in Hive 0.13.0 and later)
  7. | AVRO -- (Note: Available in Hive 0.14.0 and later)
  8. | JSONFILE -- (Note: Available in Hive 4.0.0 and later)
  9. | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname
  10.  
  11. 数据存储:
  12. 按行存储
  13. 按列存储
  14.  
  15. #TEXTFILE :行式存储
  16. #其他的都是列存储,ORC是对RCFILE的优化;ORC和PARQUET用的较多;

二、测试

我们建三张表导入同样的数据,看数据存储的大小;

1、TEXTFILE

  1. #建表
  2. hive (default)> create table page_views(
  3. > track_time string,
  4. > url string,
  5. > session_id string,
  6. > referer string,
  7. > ip string,
  8. > end_user_id string,
  9. > city_id string
  10. > )
  11. > ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
  12. > STORED AS TEXTFILE;
  13. OK
  14. Time taken: 0.089 seconds
  15.  
  16. #加载数据
  17. hive (default)> load data local inpath '/opt/datas/page_views.data' into table page_views;
  18. Copying data from file:/opt/datas/page_views.data
  19. Copying file: file:/opt/datas/page_views.data
  20. Loading data to table default.page_views
  21. Table default.page_views stats: [numFiles=1, numRows=0, totalSize=19014993, rawDataSize=0]
  22. OK
  23. Time taken: 0.326 seconds

2、ORCFILE

  1. hive (default)> create table page_views_orc(
  2. > track_time string,
  3. > url string,
  4. > session_id string,
  5. > referer string,
  6. > ip string,
  7. > end_user_id string,
  8. > city_id string
  9. > )
  10. > ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
  11. > STORED AS orc;
  12. OK
  13. Time taken: 0.04 seconds
  14.  
  15. hive (default)> insert into table page_views_orc select * from page_views;

3、PARQUET

  1. hive (default)> create table page_views_parquet(
  2. > track_time string,
  3. > url string,
  4. > session_id string,
  5. > referer string,
  6. > ip string,
  7. > end_user_id string,
  8. > city_id string
  9. > )
  10. > ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
  11. > STORED AS parquet;
  12. OK
  13. Time taken: 0.037 seconds
  14.  
  15. hive (default)> insert into table page_views_parquet select * from page_views;

4、查看各个表文件大小

  1. hive (default)> dfs -du -h /user/hive/warehouse/page_views/;
  2. 18.1 M /user/hive/warehouse/page_views/page_views.data
  3.  
  4. hive (default)> dfs -du -h /user/hive/warehouse/page_views_orc/;
  5. 2.6 M /user/hive/warehouse/page_views_orc/000000_0
  6.  
  7. hive (default)> dfs -du -h /user/hive/warehouse/page_views_parquet/;
  8. 13.1 M /user/hive/warehouse/page_views_parquet/000000_0
  9.  
  10. #明显的可以看出,数据相同时,存储为不同的格式:
  11. TEXTFILE格式的表:18.1M
  12. ORCFILE格式的表:2.6M
  13. PARQUET格式的表:13.1M

5、查询测试

  1. #TEXTFILE表查询
  2. hive (default)> select session_id, count(*) cnt from page_views group by session_id order by cnt desc limit 30;
  3. ......
  4. Time taken: 39.427 seconds, Fetched: 30 row(s) #39.427秒
  5.  
  6. #ORCFILE表查询
  7. hive (default)> select session_id, count(*) cnt from page_views_orc group by session_id order by cnt desc limit 30;
  8. ......
  9. Time taken: 38.319 seconds, Fetched: 30 row(s) #38.319秒
  10.  
  11. #可见orc格式的表,不仅数据体积小很多,查询也有优势

三、ORCFILE优化

创建ORC表时,可以使用许多表属性进一步优化ORC的工作方式:

1、例如,假设您想使用snappy压缩而不是zlib压缩。方法如下:

  1. #建表
  2. hive (default)> create table page_views_orc_snappy(
  3. > track_time string,
  4. > url string,
  5. > session_id string,
  6. > referer string,
  7. > ip string,
  8. > end_user_id string,
  9. > city_id string
  10. > )
  11. > ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
  12. > STORED AS orc tblproperties ("orc.compress"="SNAPPY");
  13. OK
  14. Time taken: 0.033 seconds
  15.  
  16. #插入数据
  17. hive (default)> insert into table page_views_orc_snappy select * from page_views;
  18.  
  19. #查询
  20. hive (default)> dfs -du -h /user/hive/warehouse/page_views_orc_snappy/;
  21. 3.8 M /user/hive/warehouse/page_views_orc_snappy/000000_0
  22.  
  23. #此时发现,用snappy压缩完,数据反而比orcfile表数据还大了,怎么回事呢?
  24. 因为建ORCFILE表时,不指定压缩,默认使用ZLIB压缩,但是指定了snappy压缩就会使用snappy
  25. 而且ZLIB的压缩比大于snappy,所以此时的snappy压缩稍微大一些;

总结:

  1. 在实际的项目开发当中,hive表的数据
  2. *存储格式I orcfile/qarquet #推荐
  3. *数据压缩
  4. snappy #推荐

3.4-3.6 Hive Storage Format的更多相关文章

  1. Hive基本语法操练

    建表规则如下: CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment ...

  2. 【转】Hive配置文件中配置项的含义详解(收藏版)

    http://www.aboutyun.com/thread-7548-1-1.html 这里面列出了hive几乎所有的配置项,下面问题只是说出了几种配置项目的作用.更多内容,可以查看内容问题导读:1 ...

  3. hive学习笔记——表的基本的操作

    1.hive的数据加载方式 1.1.load data 这中方式一般用于初始化的时候 load data [local] inpath '...' [overwrite] into table t1 ...

  4. [Hive - LanguageManual] Alter Table/Partition/Column

    Alter Table/Partition/Column Alter Table Rename Table Alter Table Properties Alter Table Comment Add ...

  5. [Hive - LanguageManual] Create/Drop/Alter Database Create/Drop/Truncate Table

    Hive Data Definition Language Hive Data Definition Language Overview Create/Drop/Alter Database Crea ...

  6. Hive调优实践

    1 文件格式的选择 ORC格式确实要比textFile要更适合于hive,查询速度会提高20-40%左右 例子1: youtube1的文件格式是TextFIle,youtube3的文件格式是orc h ...

  7. hadoop记录-hive常见设置

    分区表 set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstrict;create tabl ...

  8. hive参数配置详细

    hive.exec.mode.local.auto 决定 Hive 是否应该自动地根据输入文件大小,在本地运行(在GateWay运行) true hive.exec.mode.local.auto.i ...

  9. Optimizing Hive queries for ORC formatted tables

    Short Description: Hive configuration settings to optimize your HiveQL when querying ORC formatted t ...

随机推荐

  1. Hnu 11187 Emoticons :-) (ac自己主动机+贪心)

    题目大意: 破坏文本串.使之没有没有出现表情.破坏就是用空格替换.问最少须要破坏多少个字符. 思路分析: 初看跟Hdu 2457 没什么差别,事实上Hdu2457是要求将字符替换成ACGT,而这个仅仅 ...

  2. WPF简单计算器

  3. RESTful设计模式状态码code说明

    一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. 下面是标准RESTfu ...

  4. CentOS系统时间修改

    1. 实体机器上安装CentOS $date -s '2015-03-03 13:34:00' 2. 虚拟机上安装的CentOS #查看系统时间和硬件时间 date hwclock --show #设 ...

  5. 多用GCD,少用performSelect系列方法

    例如,要延后执行某项任务,可以有下面两种实现方式,而我们应该优先考虑第二种: // Using performSelect: withObject: afterDelay: [self perform ...

  6. [转]***换机房换ip之后不能连外网

    ***换机房换ip之后不能连外网 时间 2015-07-21 15:17:16  Wendal随笔 原文  http://wendal.net/2015/07/21.html 主题 iptables ...

  7. 虚拟化(五):vsphere高可用群集与容错(存储DRS是一种可用于将多个数据存储作为单个数据存储群集进行管理的功能)

    vsphere高级功能需要vcenter server和共享存储的支持才能实现.vsphere的高级功能有 vmotion.storage vmotion.vsphere HA.vsphere DRS ...

  8. Delphi快捷键大全

    Delphi快捷键大全 在过程.函数.事件内部, SHIFT+CTRL+向上的方向键 可跳跃到相应的过程.函数.事件的定义.相反,在过程.函数.事件的定义处,SHIFT+CTRL+向下的方向键 可跳跃 ...

  9. Java 获取当前日期和时间

    原文地址:http://www.blogjava.net/parable-myth/archive/2013/01/17/394364.html 有三种方法: 方法一:用java.util.Date类 ...

  10. 03-树2 List Leaves(25 point(s)) 【Tree】

    03-树2 List Leaves(25 point(s)) Given a tree, you are supposed to list all the leaves in the order of ...