Fork me on GitHub

hive之路6-存储格式和数据格式

hive存储格式

Hive会为每个创建的数据库在HDFS上创建一个目录,该数据库的表会以子目录形式存储,表中的数据会以表目录下的文件形式存储。

对于默认的defautl数据库,默认缺省的数据库没有自己的目录,default数据库的表默认存放在/usr/hive/warehouse目录下

存储方式 格式
行存储 textfile
Parquet
列存储 ORCfile
行列结合 RCfile
二进制存储 SequenceFile

一、 textfile

默认格式,存放方式为行存储;数据不做压缩,磁盘开销大,数据解析开销大

二、SequenceFile

Hadoop API提供的**二进制存储格式,**具有使用方便、可分割、可压缩等特点。它支持三种压缩格式:

  • NONE
  • RECORD
  • BLOCK

Record压缩率低,一般选择是BLOCK压缩

三、RCfile

一种行列存储相结合的存储方式。

四、ORCfile

数据按照行分块,每个块按照列存储,每个块都有一个索引。数据压缩快,快速列存取,是hive给出的一种新存储格式。

五、Parquet

一种行存储方式,压缩性能好;同时可以减少大量表的扫描和反序列化时间。

hive数据格式

当数据存储在文本文件中,必须按照一定的格式来区分行和列,并且在行列中自定这些区分符。

hive中默认使用的几个比较少见的字符:

分隔符 描述
\n 换行符
对于文本文件来说,每行是一条记录,所以\n 来分割记录
^A (Ctrl+A) 分割字段,也可以用\001 来表示
^B (Ctrl+B) 用于分割 Arrary 或者 Struct 中的元素,或者用于 map 中键值之间的分割,也可以用\002 分割。
^C 用于 map 中键和值自己分割,也可以用\003 表示。

本文标题:hive之路6-存储格式和数据格式

发布时间:2019年11月22日 - 08:11

原始链接:http://www.renpeter.cn/2019/11/22/hive%E4%B9%8B%E8%B7%AF6-%E5%AD%98%E5%82%A8%E6%A0%BC%E5%BC%8F%E5%92%8C%E6%95%B0%E6%8D%AE%E6%A0%BC%E5%BC%8F.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea