3.4-3.6 Hive Storage Format
一、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的更多相关文章
- Hive基本语法操练
建表规则如下: CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment ...
- 【转】Hive配置文件中配置项的含义详解(收藏版)
http://www.aboutyun.com/thread-7548-1-1.html 这里面列出了hive几乎所有的配置项,下面问题只是说出了几种配置项目的作用.更多内容,可以查看内容问题导读:1 ...
- hive学习笔记——表的基本的操作
1.hive的数据加载方式 1.1.load data 这中方式一般用于初始化的时候 load data [local] inpath '...' [overwrite] into table t1 ...
- [Hive - LanguageManual] Alter Table/Partition/Column
Alter Table/Partition/Column Alter Table Rename Table Alter Table Properties Alter Table Comment Add ...
- [Hive - LanguageManual] Create/Drop/Alter Database Create/Drop/Truncate Table
Hive Data Definition Language Hive Data Definition Language Overview Create/Drop/Alter Database Crea ...
- Hive调优实践
1 文件格式的选择 ORC格式确实要比textFile要更适合于hive,查询速度会提高20-40%左右 例子1: youtube1的文件格式是TextFIle,youtube3的文件格式是orc h ...
- hadoop记录-hive常见设置
分区表 set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstrict;create tabl ...
- hive参数配置详细
hive.exec.mode.local.auto 决定 Hive 是否应该自动地根据输入文件大小,在本地运行(在GateWay运行) true hive.exec.mode.local.auto.i ...
- Optimizing Hive queries for ORC formatted tables
Short Description: Hive configuration settings to optimize your HiveQL when querying ORC formatted t ...
随机推荐
- (八):构建WineLib DLL
(一):介绍 出于某些原因,你可能会发现你想要和使用Windows DLL一样使用你的Linux库.对于这有一些原因例如以下: 你正在支持一个使用多个第三方库的大应用.该项目在Linux中是可用的,可 ...
- angularJS contenteditable 指令双向绑定
项目遇到需求有点奇葩:双击div使其可编辑,失去焦点后进行数据绑定 通过自定义指令完成 好了上代码: .directive('contentEditable', function() { return ...
- 移动端,多屏幕尺寸高清屏retina屏适配的解决方案
移动端高清.多屏适配方案 背景 开发移动端H5页面 面对不同分辨率的手机 面对不同屏幕尺寸的手机 视觉稿 在前端开发之前,视觉MM会给我们一个psd文件,称之为视觉稿. 对于移动端开发而言,为了做到页 ...
- Hadoop集群_HDFS初探之旅
1.HDFS简介 HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开 ...
- 【转】安卓逆向实践5——IDA动态调试so源码
之前的安卓逆向都是在Java层上面的,但是当前大多数App,为了安全或者效率问题,会把一些重要功能放到native层,所以这里通过例子记录一下使用IDA对so文件进行调试的过程并对要点进行总结. 一. ...
- 解决火狐访问(localhost)本地网站提示输入用户名密码
VS在调试程序时浏览器一直提示要输入用户名及密码,但是我程序根本没有登录界面,最后终于找到了解决方案,如下: 1.在火狐浏览器地址栏中输入:about:config 2.然后在搜索文本框中输入:NTL ...
- iOS开发 如何检查内存泄漏
本文转载至 http://mobile.51cto.com/iphone-423391.htm 在开发的时候内存泄漏是不可避免的,但是也是我们需要尽量减少的,因为内存泄漏可能会很大程度的影响程序的稳定 ...
- IE浏览器 get请求缓存问题
场景: 比较简单是使用的SpringMVC框架,在做资源国际化的时候,遇到了这个问题.具体做的操作是在页面上点击切换语言的时候,需要发起请求在Controller中切换Locale. 问题: 1.开始 ...
- Linux就该这么学--命令集合3(文本文件编辑命令)
1.cat命令查看纯文本文件(较短):(cat [选项] [文件]) cat -n showpath.sh 附录: -n 显示行号 -b 显示行号(不包括空行) -A 显示出“不可见”的符号,如空格, ...
- holiday和vacation的区别
holiday:假日vacation:假期a.对于英国人或者澳大利亚人来说,“假日”的意思等同于“假期”(尽管他们很少用“假期”)b.如果你是美国人,“假日”是指一个特殊的日子,好像圣诞节,而“假期” ...