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) | 分割字段,也可以用 01 来表示 |
^B (Ctrl B) | 用于分割 Arrary 或者 Struct 中的元素,或者用于 map 中键值之间的分割,也可以用 02 分割。 |
^C | 用于 map 中键和值自己分割,也可以用 03 表示。 |