hive包含的文件存储格式有:textFile、SequenceFile、RCfile、ORCFile,parquet。
textFile:
默认的文件格式,行存储。
优点:最简单的数据格式,便于和其它工具(pig,grep,awk)共享数据,便于查看和编辑;加载快;
缺点:存储空间占用较大,I/O性能低;不可对数据进行切割、合并,不能进行并行操作;
适用于小型查询,测试操作等。
sequqnceFile:
键值对形式存储的二进制文本格式,行存储。
优点:可压缩、可分割。优化I/O性能;可并行操作;
缺点:存储空间占用最大,只局限于hadoop生态使用;
适用于小数据,大部分都是列查询的操作。
RCFile:
行列式存储。先将数据按行分块,每一个块数据转换成一个Record对象,避免读取一条数据需要读取多个block;然后块数据按列存储。
优点:可压缩,高效的列存储,查询速度较快;
缺点:加载时性能消耗较大,全量数据读取时性能较低。
ORCFile:
优化后的RCFile,优缺点与RCFile类似,查询效率最高。
适用于hive中、大型的存储和查询。
Parquet:
列存储。
优点:更高效的压缩和编码;不与任何数据处理技术绑定,可用于多种数据处理框架。
缺点:不支持update,insert,delete,ACID
适用于字段非常多,无更新,只读取部分列数据。
总结:
表的字段个数不多时文件按块进行压缩,行存储比较高效;
表的字段个数成百上千时,且只需要个别字段的查询时,列存储可较大提高效率;
数据仓库一次写入,多次读取,orc格式比较有优势。