一、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

file_format:
: SEQUENCEFILE
| TEXTFILE -- (Default, depending on hive.default.fileformat configuration)
| RCFILE -- (Note: Available in Hive 0.6.0 and later)
| ORC -- (Note: Available in Hive 0.11.0 and later)
| PARQUET -- (Note: Available in Hive 0.13.0 and later)
| AVRO -- (Note: Available in Hive 0.14.0 and later)
| JSONFILE -- (Note: Available in Hive 4.0.0 and later)
| INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname 数据存储:
按行存储
按列存储 #TEXTFILE :行式存储
#其他的都是列存储,ORC是对RCFILE的优化;ORC和PARQUET用的较多;

二、测试

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

1、TEXTFILE

#建表
hive (default)> create table page_views(
> 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;
OK
Time taken: 0.089 seconds #加载数据
hive (default)> load data local inpath '/opt/datas/page_views.data' into table page_views;
Copying data from file:/opt/datas/page_views.data
Copying file: file:/opt/datas/page_views.data
Loading data to table default.page_views
Table default.page_views stats: [numFiles=1, numRows=0, totalSize=19014993, rawDataSize=0]
OK
Time taken: 0.326 seconds

2、ORCFILE

hive (default)> create table page_views_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;
OK
Time taken: 0.04 seconds hive (default)> insert into table page_views_orc select * from page_views;

3、PARQUET

hive (default)> create table page_views_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;
OK
Time taken: 0.037 seconds hive (default)> insert into table page_views_parquet select * from page_views;

4、查看各个表文件大小

hive (default)> dfs -du -h /user/hive/warehouse/page_views/;
18.1 M /user/hive/warehouse/page_views/page_views.data hive (default)> dfs -du -h /user/hive/warehouse/page_views_orc/;
2.6 M /user/hive/warehouse/page_views_orc/000000_0 hive (default)> dfs -du -h /user/hive/warehouse/page_views_parquet/;
13.1 M /user/hive/warehouse/page_views_parquet/000000_0 #明显的可以看出,数据相同时,存储为不同的格式:
TEXTFILE格式的表:18.1M
ORCFILE格式的表:2.6M
PARQUET格式的表:13.1M

5、查询测试

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

三、ORCFILE优化

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

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

#建表
hive (default)> create table page_views_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");
OK
Time taken: 0.033 seconds #插入数据
hive (default)> insert into table page_views_orc_snappy select * from page_views; #查询
hive (default)> dfs -du -h /user/hive/warehouse/page_views_orc_snappy/;
3.8 M /user/hive/warehouse/page_views_orc_snappy/000000_0 #此时发现,用snappy压缩完,数据反而比orcfile表数据还大了,怎么回事呢?
因为建ORCFILE表时,不指定压缩,默认使用ZLIB压缩,但是指定了snappy压缩就会使用snappy,
而且ZLIB的压缩比大于snappy,所以此时的snappy压缩稍微大一些;

总结:

在实际的项目开发当中,hive表的数据
*存储格式I orcfile/qarquet #推荐
*数据压缩
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. Spark SQL之External DataSource外部数据源(二)源代码分析

    上周Spark1.2刚公布,周末在家没事,把这个特性给了解一下,顺便分析下源代码,看一看这个特性是怎样设计及实现的. /** Spark SQL源代码分析系列文章*/ (Ps: External Da ...

  2. shell grep正则匹配汉字

    Shell grep正则匹配中文 测试文本 demo_exe.c,内容如下,需要注意保存的编码格式,对输出到终端有影响: 我们中文操作系统ASNI默认是GBK的. #include<stdio. ...

  3. Jquery 插件 实例

    先说明下应用场景,通过可配项的配置和默认项覆盖,获取指定的需求数据,填充到指定的位置(两个指定其实都是可配的) (function($) { $.fn.extend({ getOneNews: fun ...

  4. webstorm 设置IP 访问 手机测试效果

    http://www.cnblogs.com/gulei/p/5126383.html 前端开发中,经常需要将做好的页面给其他同事预览或手机测试,之前一直用的第三方本地服务器usbwebserver, ...

  5. Django框架学习——python模拟Django框架(转载)

    原贴来源 http://wiki.woodpecker.org.cn/moin/ObpLovelyPython/AbtWebModules python实现web服务器 web开发首先要有web服务器 ...

  6. UITableView基础入门

    新建一个Single View Application 添加一个空类如下: using System; using UIKit; using Foundation; namespace BasicTa ...

  7. 利用crtmpserver搭建rtmp服务器

    Google + 实践:最终直播成功. 记录一下. 这样.兴许就能够对代码进行改造,利用开源码实现:Android平台下.搭建rtmpserver.浏览器端利用flash播放视频. 代码架构为:ffm ...

  8. PHP基础函数、自定义函数以及数组

    2.10 星期五  我们已经真正开始学习PHP 了,今天的主要内容是php基础函数.自定义函数以及数组, 内容有点碎,但是对于初学者来说比较重要,下面是对今天所讲内容的整理:  1 php的基本语法和 ...

  9. EasyDarwin开源流媒体服务器进行RTSP转发过程中将sdp由文件存储改成内存索引

    -本篇由团队成员Fantasy供稿! 原始版本 在Darwin Streaming Server版本中,推送端DoAnnounce的时候后服务器会根据easydarwin.xml中配置的movies_ ...

  10. 20170313 ABAP程序未激活状态下保存或激活进入debug

    自动进入断点,没有设置的.FUNCTION RS_NEW_PROGRAM_INDEX. https://archive.sap.com/discussions/message/14132983 解决办 ...