赞
踩
nvl(key1,SUBSTRING(MD5(RAND()),1,5))
--这里必须转成string 否则数据类型不一样
让hive 自动的对skew key 进行处理
set hive.optimize.skewjoin=true
set hive.skewjoin. key= 100000;数量多于这个数,那么就会作为倾斜键处理
sethive.optimize.skewjoin.compiletime=true
注意:
先拼接随机数再去掉拼接部分
比如用户表中user_id字段为int,日志表中user_id字段既有string类型也有int类型。当两个表按照user_id进行Join操作时。后果是只有一个reduce任务 默认的Hash操作会按int型的id来进行分配,这样会导致所有string类型id的记录都分配到一个Reducer中。
解决方式:把数字类型转换成字符串类型
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。