hive大表join空key优化

Posted 海绵不老

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive大表join空key优化相关的知识,希望对你有一定的参考价值。

hive大表join空key优化

如果A表中有大量c字段为null的数据。如果不对null值处理,此时,会产生数据倾斜!

情形一

		假如不需要id为null的数据!此时可以将A表中id为null的字段提前过滤,减少MR在执行时,输入的数据量!
		
		解决:	将null值过滤,过滤后再执行Join!
			(select * from A where c is not null)A left join B  on A.c = b.c

情形二

         A表中c字段为null的数据也需要,不能过滤,如何解决数据倾斜?
				注意:①可以将null替换为一个不影响执行结果的随机值!
					       ②注意转换后类型匹配的问题
			insert overwrite local directory '/home/hadoop/joinresult'
			select n.* from nullidtable n full join ori o on 
			case when n.id is null then -floor(rand()*100) else n.id end = o.id;

以上是关于hive大表join空key优化的主要内容,如果未能解决你的问题,请参考以下文章

hive高级操作(优化,数据倾斜优化)

HIVE优化和数据倾斜合并小文件

Hive数据倾斜和解决办法

大数据——Hive SQL优化

大数据——Hive SQL优化

大数据——Hive SQL优化