hive中的存储方式

来源:互联网 发布:淘宝首页轮播图怎么来 编辑:程序博客网 时间:2024/06/01 03:58

之前在进行存储空间统计的时候发现ORC格式可以节省很多存储空间,于是上网查了一些这个格式的相关信息。有兴趣详细了解的可以参考这个网站上的介绍https://www.iteblog.com/archives/1014.html

Hive的存储格式主要有:

1.textfile

Hive的默认存储格式

存储方式:行存储

磁盘开销大数据解析开销大

压缩的text文件 hive无法进行合并和拆分

2.SequenceFile

二进制文件以key,value的形式序列化到文件中

存储方式:行存储

可分割压缩

一般选择block压缩

优势是文件和Hadoop api中的mapfile是相互兼容的

3.rcfile

存储方式:数据按行分块每块按照列存储

压缩快快速列存取

读记录尽量涉及到的block最少

读取需要的列只需要读取每个row group 的头部定义。

读取全量数据的操作性能可能比sequencefile没有明显的优势

4.orc

存储方式:数据按行分块每块按照列存储

压缩快快速列存取

效率比rcfile高,是rcfile的改良版本

5.自定义格式

用户可以通过实现inputformat和 outputformat来自定义输入输出格式

 

Hive导入数据的几种方式:

1.从本地文件系统中导入

load data local inpath 'customer .data'into table customer;

2.从HDFS上导入

load data inpath '/hive/customer .data'into table customer;

3.从别的表中查询出相应的数据导入

insert into table customer select * fromcustomer_tmp;

我们在做存储评估的时候,因为textfile类型的数据不能直接保存到orc类型的表中,根据上面的几种导入数据的方式我们做一下转换就可以了,先导入到一个textfile类型的表中然后在通过查询导入到另外一个表就可以了

drop table if existsdata.test_pa_merchant_info1;

create external tabledata.test_pa_merchant_info1

(…)

row format delimited fields terminated by'\t' lines terminated by '\n' stored AS orc;

INSERT OVERWRITE TABLEtest_pa_merchant_info1 

SELECT * FROM test_pa_merchant_info;