1.hive文件的三种存储格式
textfile,sequence file,rcfile。基于HDFS的行存储具备快速数据加载和动态负载的高适应能力,因为行存储保证了相同记录的所有域都在同一个集群节点。但是它不太满足快速的查询响应时间的要求,因为当查询仅仅针对所有列中的 少数几列时,它就不能跳过不需要的列,直接定位到所需列;同时在存储空间利用上,它也存在一些瓶颈,由于数据表中包含不同类型,不同数据值的列,行存储不 易获得一个较高的压缩比。RCFILE是基于SEQUENCEFILE实现的列存储格式。除了满足快速数据加载和动态负载高适应的需求外,也解决了SEQUENCEFILE的一些瓶颈。
其中textfile是文本存储,磁盘开销大,hive不会做切分,无法并行。sequence file是二进制存储 以key value方式存储,不过key为空,防止在map阶段按照key进行排序,使用默认的writable方式进行序列化和反序列化,存储性能高。
2.动态分区表和静态分区表的区别
静态分区表是在插入的时候明确指定分区路径,但是当在数据量特别大的时候,会导致sql语句写的太多,此时动态分区表能够根据字段来动态创建分区,但是动态分区要求至少有一列分区字段是静态的,防止因涉及错误导致查询产生大量的分区。
3.hive聚合操作有哪些
count统计个数 sum计算集合的和 求集合平均值 计算集合的方差 协方差 计算集合最值 计算集合占比
4.hive性能优化方式有哪些
SET hive.map.aggr=true 这个设置会触发在map阶