关于hive当中表的存储和压缩方式总结

摘要:
最近对蜂巢表的存储模式和压缩模式进行了研究。(1) 配置单元数据表的默认格式。压缩文件不支持拆分。上面的数据存储格式是文本文件,

这几天研究hive表的存储方式和压缩模式。在这里做一个简单的总结

hive表的存储

样例 : 我的表:rp_person_house_loan_info

            数据总量:1933776

textfile

  (1)hive数据表的默认格式,存储方式:行存储 。

  (2) 可使用Gzip,Bzip2等压缩算法压缩,压缩后的文件不支持split

关于hive当中表的存储和压缩方式总结第1张

上面的数据存储格式为textfile,文件没有压缩总的文件大小为160.1M。

SequenceFile

(1)Hadoop API提供的一种二进制文件,以<key,value>的形式序列化到文件中。存储方式:行存储。

(2)支持三种压缩选择:NONE,RECORD,BLOCK。Record压缩率低,一般建议使用BLOCK压缩。

(3)优势是文件和hadoop api中的MapFile是相互兼容的

关于hive当中表的存储和压缩方式总结第2张

上面数据的存储模式为sequencefile,总的文件大小为186.86M

RCFile

(1)存储方式:数据按行分块,每块按列存储。结合了行存储和列存储的优点:

(2)首先,RCFile 保证同一行的数据位于同一节点,因此元组重构的开销很低
(3)其次,像列存储一样,RCFile 能够利用列维度的数据压缩,并且能跳过不必要的列读取

关于hive当中表的存储和压缩方式总结第3张

 上面数据的存储模式为RCFile,总的文件大小为134.17M

ORCFile

  • 存储方式:数据按行分块 每块按照列存储
  • 压缩快 快速列存取
  • 效率比rcfile高,是rcfile的改良版本

关于hive当中表的存储和压缩方式总结第4张

上面数据的存储模式为orc模式,同时启动了snappy的压缩模式,总的文件大小为34.48M 下面是orc 的snappy压缩的表结构:

关于hive当中表的存储和压缩方式总结第5张

 总结:

我们再建设数据仓库的时候,通常都是一次写入,多次读取
存储文件的大小的关系:
SequenceFile > TextFile > RCfile

TextFile 默认格式,加载速度最快,可以采用Gzip、bzip2等进行压缩,压缩后的文件无法split,即并行处理
SequenceFile 压缩率最低,查询速度一般,三种压缩格式NONE,RECORD,BLOCK
RCfile 压缩率最高,查询速度最快,数据加载最慢。
orc (snappy压缩模式) 查询速度更快

所以在数据仓库的建设过程当中尽量的使用orc的这种模式再加上压缩模式。一方面减少磁盘的使用量,一方面可以实现数据的split(分布式计算),实现查询速度加快。

建立orc的snappy压缩模式的建表语句如下:

CREATE TABLE IF NOT EXISTS rp_person_house_loan_info
    (
    loan_no varchar(20),
    if_me varchar(5)
    
    )
 ROW FORMAT DELIMITED
 FIELDS TERMINATED BY '	'
 STORED AS orc tblproperties ("orc.compress"="SNAPPY");

对于其他的模式启动压缩的方式:

在插入之前对表的压缩模式进行设定
set
hive.exec.compress.output=true; set mapred.output.compress=true; set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec;

免责声明:文章转载自《关于hive当中表的存储和压缩方式总结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Xcode断点调试技巧Hulu大规模容器调度系统Capos下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

阿里云重磅发布DMS数据库实验室 免费体验数据库引擎

2月27日,阿里云数据管理DMS发布年度巨献——数据库实验室,用户可在该实验室环境下免费体验数据库引擎、以及DMS各项产品功能。数据库实验室是DMS所提供的体验空间,免费赠送数据库引擎资源。 用户只需要登录阿里云账号,即可开通使用各个已支持数据库引擎的全部产品功能,同时还将拥有如下权益: 免费256MB数据空间 免费体验DMS所有功能 未来将享有其他类型...

layui上传文件组件(前后端代码实现)

我个人博客系统上传特色图片功能就是用layui上传文件组件做的。另外采用某个生态框架,尽量都统一用该生态框架对应的解决方案,因为这样一来,有这么几个好处?1.统一而不杂糅,有利于制定相应的编码规范,方便维护;2.复用性高;3.不会因公司开发人员的离职而导致一时找不到人来做这件事情; 就这三点,也足以让企业降低相应的开发成本 前端代码实现: <!DOC...

nohup报错

1 这是脚本编码的问题 解决办法: (1)用vi打开对应的脚本 (2)在命令行下(:set ff?),看一下当前文档的编码格式 ,有两种情况 fileformat=unix和fileformat=dox (3)根据需求改为相应的格式(set ff=unix或set ff=dox) (4)保存并退出 2 解决方案: 报这个问题,表名守候进程已经起来了,但...

tableau-空间分析(tableau入门day-5)

目录 1.场景一---背景地图添加和使用 2.场景二---双轴图流动地图的使用 场景一 使用场景:与分析相关联的背景地图插入,可与分析信息结合更紧密,方便用户理解,可以是公司内部人员分布,工厂平面图设备位置,及学校教学楼分布等信息,也可是人体图研究容易受伤部位等 知识点① 背景地图的添加 知识点② 页面的使用 知识点③ 高亮笔的用法 背景地图添加 地图...

java多线程文件上传服务器

 描述: (1)jdk自带线程池见 JDK自带线程池配置 (2)此上传文件服务器中上传文件的后缀名通过第一段缓冲字符流传递,此缓冲字符流大小为1024,在文件接收端以1024接收、处理。 1、服务器代码如下(使用jdk自带线程池): 1 /** 2 * 服务器处理多线程问题 3 * 4 * 1.因为服务器是要很多人访问的,因此里面一定要用多...

Linux下Nodejs安装(完整详细)

node下载地址: http://nodejs.cn/download/ 首先去官网下载代码,这里一定要注意安装分两种,一种是Source Code源码,一种是编译后的文件。我就是按照网上源码的安装方式去操作编译后的文件,结果坑了好久好久。   (一) 编译好的文件     简单说就是解压后,在bin文件夹中已经存在node以及npm,如果你进入到对应文...