第十章 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