HIVE文件存储格式

HIVE文件存储格式

Hive文件存储格式包括以下几类:

TEXTFILE

SEQUENCEFILE

RCFILE

ORCFILE

其中textfile为默认格式,建表时不指定默认为这个格式,导入数据时会直接把数据文件拷贝到hdfs上不进行处理。

SequenceFile,RCFile,ORCfile格式的表不能直接从本地文件导入数据,数据要先导入到textfile格式的表中,然后再从textfile表中用insert导入到SequenceFile,RCFile,ORCFile表中。

1.   TEXTFILE

默认格式,数据不做压缩,磁盘开销大,数据解析开销大。

可结合Gzip、Bzip2使用(系统自动检查,执行查询时自动解压),但使用这种方式,Hive不会对数据进行切分,从而无法对数据进行并行操作。比如如果默认块大小64MB,那么输入一个128MB的非压缩文件则可以拆分为128/64=2个MapReduce任务。而如果文件是压缩格式128MB,那么对于这个文件则只会启动一个mapper。

实例:

hive > create table test1(str STRING)  

hive > STORED AS TEXTFILE;

导入文件:  

hive > LOAD DATA LOCAL INPATH '/home/work/data/test.txt' INTO TABLE test1;  

2.   SEQUENCEFILE

SequenceFileHadoop API提供的一种二进制文件支持,其具有使用方便、可分割、可压缩的特点。
SequenceFile
支持三种压缩选择:NONE, RECORD, BLOCK Record压缩率低,一般建议使用BLOCK压缩。

实例:

hive> create table test2(str STRING)  

> STORED AS SEQUENCEFILE;

hive> SET hive.exec.compress.output=true;  

hive> SET io.seqfile.compression.type=BLOCK;  

hive> INSERT OVERWRITE TABLE test2 SELECT * FROM test1; 

3.   RCFILE

RCFILE是一种行列存储相结合的存储方式,其遵循的是先水平划分,再垂直划分的设计理念。首先,RCFile保证同一行的数据位于同一节点,因此元组重构的开销很低;其次,像列存储一样,RCFile能够利用列维度的数据压缩,并且能跳过不必要的列读取

 

实例:

hive > create table test3(str STRING)

hive > STORED AS RCFILE;

hive > INSERT OVERWRITE TABLE test3 SELECT * FROM test1;

 

RCFile存储结构,其广泛应用于Facebook公司的数据分析系统Hive中。首先,RCFile具备相当于行存储的数据加载速度和负载适应能力;其次,RCFile的读优化可以在扫描表格时避免不必要的列读取,测试显示在多数情况下,数据加载时性能消耗较大,但是具有较好的压缩比和查询响应;再次,RCFile使用列维度的压缩,因此能够有效提升存储空间利用率。数据仓库的特点是一次写入、多次读取,因此,整体来看,RCFILE相比其余两种格式具有较明显的优势。


4.   ORCFILE

ORCFile(Optimized Row Columnar)hive 0.11版里引入的新的存储格式,是对之前的RCFile存储格式的优化。

每个ORC文件由1个或多个stripe组成,每个stripe250MB大小,这个Stripe实际相当于之前的rcfile里的RowGroup概念,每个Stripe大小250MB,这样能提升顺序读的吞吐率。每个Stripe里有三部分组成,分别是IndexData,Row Data,Stripe Footer:

   1,Index Data:一个轻量级的index,默认是每隔1W行做一个索引。这里做的索引应该只是记录某行的各字段在Row Data中的offset,还包括每个Column的max和min值。

   2,Row Data:存的是具体的数据,和RCfile一样,先取部分行,然后对这些行按列进行存储。与RCfile不同的地方在于每个列进行了编码,分成多个Stream来存储,

   3,Stripe Footer:存的是各个Stream的类型,长度等信息。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值