hive文件格式

hive文件格式,第1张

hive支持的存储格式

hive支持的存储格式包括TextFile、SequenceFile、RCFile、Avro Files、ORC Files、Parquet。

TextFile:

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

可结合Gzip、Bzip2、Snappy等使用(系统自动检查,执行查询时自动解压),但使用这种方式,hive不会对数据进行切分,从而无法对数据进行并行 *** 作。

SequenceFile:

SequenceFile是Hadoop API 提供的一种二进制文件,洞运它将数据以的形式序列化到文件中升宏。这种二进制文件内部使用Hadoop 的标准的Writable 接口实现序列化和反序列化。它与Hadoop API中的MapFile 是互相兼容的。Hive 中的SequenceFile 继承自Hadoop API 的SequenceFile,不过它的key为空,使用value 存放实纳笑梁际的值, 这样是为了避免MR 在运行map 阶段的排序过程。

SequenceFile的文件结构图:

Header通用头文件格式:

SEQ3BYTE

Nun1byte数字

keyClassName

ValueClassName

compression(boolean)指明了在文件中是否启用压缩

blockCompression(boolean,指明是否是block压缩)

compressioncodec

Metadata文件元数据

Sync头文件结束标志

Block-Compressed SequenceFile格式

RCFile

RCFile是Hive推出的一种专门面向列的数据格式。 它遵循“先按列划分,再垂直划分”的设计理念。当查询过程中,针对它并不关心的列时,它会在IO上跳过这些列。需要说明的是,RCFile在map阶段从 远端拷贝仍然是拷贝整个数据块,并且拷贝到本地目录后RCFile并不是真正直接跳过不需要的列,并跳到需要读取的列, 而是通过扫描每一个row group的头部定义来实现的,但是在整个HDFS Block 级别的头部并没有定义每个列从哪个row group起始到哪个row group结束。所以在读取所有列的情况下,RCFile的性能反而没有SequenceFile高。

是Writer写上的,和hadoop没有关系,sequencefile只是hadoop提供的一种内置的文件格弊闹培式,并提供了Reader和Writer, 你自己也可租唯以实现的,;

因为sequencefile是二进制的存储,在reader seek之后,reader就找不到正确的其实record起始位弯答置了,同步信息就是用来校验找到新的record起始位置的。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12165626.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存