第十章 Hive调优 【笛卡尔积】


1. 笛卡尔积
1. 触发笛卡尔积条件
1. join 时,没有on条件 或 on 条件无效

2. 为什么要尽量避免笛卡尔积?
hive 只会使用一个reduce来完成笛卡尔积,当数据量过大时,容易内存不足

3. 如果必须使用笛卡尔积时,可以使用MapJoin,关联操作在Map端完成

4. 测试
      -- 1. 触发笛卡尔积时,只会生成一个reduce
        set mapreduce.job.reduces=2;
        set mapred.job.name='one';
        set hive.auto.convert.join=false;
        select t1.*,t2.* from maptab as t1
        inner join maptab as t2
        -- on t1.name = t2.name
        ;
        Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 1