1、TextFile
TextFile文件不支持块压缩,默认格式,数据不做压缩,磁盘开销大,数据解析开销大。这边不做深入介绍。
2、RCFile
Record Columnar的缩写。是Hadoop中第一个列文件格式。能够很好的压缩和快速的查询性能,但是不支持模式演进。通常
写操作比较慢,比非列形式的文件格式需要更多的内存空间和计算量。
RCFile是一种行列存储相结合的存储方式。首先,其将数据按行分块,保证同一个record在一个块上,避免读一个记录需要读
取多个block。其次,块数据列式存储,有利于数据压缩和快速的列存取。
3、ORCFile
存储方式:数据按行分块 每块按照列存储 ,压缩快 快速列存取,效率比rcfile高,是rcfile的改良版本,相比RC能够更好的压
缩,能够更快的查询,但还是不支持模式演进。
4、Parquet
Parquet能够很好的压缩,有很好的查询性能,支持有限的模式演进。但是写速度通常比较慢。这中文件格式主要是用在Cloudera Impala上面的。
Hive中4种排序的区别
共有四种排序:order by,sort by ,distribute by,cluster by
order by
全局排序;
对输入的数据做排序,故此只有一个reducer(多个reducer无法保证全局有序);
只有一个reducer,会导致当输入规模较大时,需要较长的计算时间;
sort by
非全局排序;
在数据进入reducer前完成排序;
当mapred.reduce.tasks>1时,只能保证每个reducer的输出有序,不保证全局有序;
distribute by
按照指定的字段对数据进行划分输出到不同的reduce中;
常和sort by一起使用,并且distribute by必须在sort by前面;
cluster by
相当于distribute by+sort by,只能默认升序,不能使用倒序;