本文解说 Hive 的数据存储,是 Hive 操作数据的基础。选用一个适宜的底层数据存储文件格局,即使在不扭转 Hive SQL 的状况下,性能也能获取数量级的优化。这种优化方式对学过 MySQL 等相关型数据库的小同伴并不生疏,选用不同的数据存储引擎,代表着不同的数据组织方式,关于数据库的体现会有不同的影响。
Hive 数据存储罕用的格局如下:
注:RCFile 和 ORCFile 并不是纯正的列式存储,它是先基于行对数据表启动分组(行组),而后对行组启动列式存储
咱们看下这几种存储结构的优缺陷:
行存储形式就是把一整行存在一同,包括一切的列,这是最经常出现的形式。这种结构能很好的顺应灵活的查问。
比如:select a from tableA 和 select a, b, c, d, e, f, g from tableA这样两个查问其实查问的开支差不多,都要求把一切的行读出去过一遍,拿出要求的列。
而且这种状况下,属于同一行的数据都在同一个 HDFS块上,重建一行数据的老本比拟低。
然而这样做有两个关键的弱点:
垂直的列存储结构:
列存储是将每列独自存储或许将某几个列作为列组存在一同。列存储内口头查问时可以防止读取不用要的列。而且普通同列的数据类型分歧,取值范畴相对多列混合更小,在这种状况下紧缩数据能到达比拟高的紧缩比。
然而这种结构在重建行时比拟吃力,尤其当一行的多个列不在一个 HDFS 块上的时刻。比如咱们从第一个>
textfile_tableueserid STRINGmovieid STRINGrating STRINGts STRING formated delimated stored textfile
© 版权声明