一、Hive的特点以及和RDBMS的异同:
1、hive是一个数据仓库的工具,可以将结构化的数据完全映射成一张表,优点是学习成本低,底层是转化为MR的程序,它是不支持事务,不支持实时查询,具体和RDBMS区别如下:
(转载)
二、Hive中的数据倾斜:
1、数据倾斜的原因:(1)、key分布不均匀。(2)、业务数据本身的原因。(3)、建表考虑不周。(4)、某些SQL本身就有数据倾斜。
2、如何避免数据的倾斜:给key一个随机的值,打散key。
3、Hive中的参数调节:①hive.map.aggr = true。②hive.groupby.skewindata = true。作用:有数据倾斜的时候进行负载均衡,当选项设定位true,生成的查询计划会有两个MR Job。第一个MR Job中,Map的输出结果集合会随机分布到Reduce中,每个Reduce做部分聚合操作,并输出结果,这样处理的结果是相同的Group By Key有可能被分发到不同的Reduce中,从而达到负载均衡的目的;第二个MR Job再根据预处理的数据结果按照Group By Key 分布到 Reduce 中(这个过程可以保证相同的 Group By Key 被分布到同一个Reduce中),最后完成最终的聚合操作。
4、SQL语句的调节:(1)、用好join key。(2)、map join让小表先进内存。(3)、大表join小表,把倾斜的数据分配到不同的reduce。(4)、count distinct 处理大量重复的数据。(5)、应该将条目少的表放在join操作符的左边,将