大数据——Hive SQL优化

大数据——Hive SQL优化

        • 一、SELECT 字段尽可能少,数据过滤尽可能提前
        • 二、能不用JOIN连接的就不用
        • 三、数据倾斜问题
        • 四、多表join时key保持一致
        • 五、去除空值和无意义的值

一、SELECT 字段尽可能少,数据过滤尽可能提前

大数据——Hive SQL优化_第1张图片

二、能不用JOIN连接的就不用

大数据——Hive SQL优化_第2张图片

三、数据倾斜问题

1、JOIN 优化
选用join key分布最均匀的表作为驱动表,并且大表放在右边,小表放在左边。

2、排序优化
sort by代替 order by.

3、少用count(distinct)
用group by代替 count(distinct)

select count(*) from (select uid from testmac group by uid) t

四、多表join时key保持一致

当对多个表进行join连接时,如果每个on子句都使用相同的连接键的话,那么只会产生一个MapReduce job,执行效率相对快。

五、去除空值和无意义的值

出现空值或无意义值时,如null,空字符串、-1等,在做join时这些空值就会非常集中,拖累进度。因此,若不需要空值数据,就提前写where语句过滤掉。若需要保留,将空值null的记录随机改为负值:

你可能感兴趣的:(大数据,hive,大数据,sql)