对hive二进制存储格式,即SequenceFile和RCFile的思考总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40795214/article/details/81591728

1. SequenceFile是面向行,RCFile是面向列。

2. TextFile,SequenceFile,RCFile是hive常用的三种存储格式。其中,TextFile是hive默认的存储格式,SequenceFile和RCFile是二进制存储格式。

3. 相比于TextFile,SequenceFile和RCFile支持压缩,文件压缩后上传到HDFS上,下载后不支持直接查看,故所占存储空间要小,磁盘和IO压力小,也更易优化。此外,SequenceFile和RCFile也支持文件切割分片,其中,RCFile会将表分成行分片(row split),在每一个分片中先存所有行的第一列,再存第二列,依此类推。

 

面向行和面向列的存储(对SequenceFile和RCFile存储的说明)

 

4. SequenceFile和RCFile的比较:不可否认的,当我们只需要查询某一列的数据时,SequenceFile往往会将整个数据行都加载到内存中,这将造成内存的浪费。然而,值得庆幸的是,RCFile却可以完全解决这个问题。使用RCFile创建表的操作如下:

CREATE TABLE ...
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe'
STORED AS RCFILE;

5. 特别的,当使用压缩顺序文件来存储hive所产生的表时,需要设置一下几个参数:

SET hive.exec.compress.output=true;
SET mapred.output.compress=true;
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
INSERT OVERWRITE TABLE ...;

 

阅读更多

没有更多推荐了,返回首页