行式存储与列式存储
行式存储
特点:
保证一条记录里面的所有字段能够存放在同一个hdfs的block里
优点:
当查询所有(select * from tbname)时,能直接查询出来
缺点:
不同列的字段类型不同,压缩性能差,空间利用率差
只查询某几列数据的时候,必须先把所有数据读取进来,在提取所需的几列,结果会增加磁盘IO,效率低
列式存储
优点:
每一列的数据类型是一样的,所有可以采用一定压缩方式,压缩性能好
只查询某几列数据的时候,对于不需要的列,可以直接跳过
缺点:
当查询所有(select * from tbname)时,对于行的数据必然会重组
存储格式
TEXTFILE格式
默认格式,数据不做压缩,磁盘开销大,数据解析开销大。可结合Gzip、Bzip2使用(系统自动检查,执行查询时自动解压),但使用这种方式,hive不会对数据进行切分,从而无法对数据进行并行操作。
SequenceFile(行式存储)