hive 中的存储格式
存储格式
-
行式存储
一行的数据都在一个hdfs block上,这样在select * from table 时 ,能全部查出,但是在查某几列时他也会将不需要的列也会取出来在选择需要的列,增加了没必要的磁盘io -
列式存储
每一列数据都类型都一样,可以采取一定的压缩,在查某几列时,只需要查询需要的列不会查询不需要的,但是在select * from table时,由于不同列不在一起,会进行数据重组
hive中存储格式
-
TextFile(行式存储,默认)
数据没有压缩,磁盘开销大。 -
sequencefile(行式存储)
key-value格式,对value进行压缩,但是多了一些数据会变大,一般不用 -
orc(列式存储)
参考官网介绍
将文件分为多个stripe,默认每个stripe为250M,在stripe中默认对每10000行进行一个索引(index data)。这个索引记录了这些行中的最大和最小的值,查询性能明显提升。
HiveQL语法- CREATE TABLE … STORED AS ORC
- ALTER TABLE … [PARTITION partition_spec] SET FILEFORMAT ORC
- SET hive.default.fileformat=ORC
-
parquet(列式存储)
性能差不多,这2 个都常用