飘过,学习学习! |
楼主,问题怎么样了 |
rsgg03 发表于 2014-12-25 13:32 谢谢了。 我现在先去处理别的问题。 完事后再来试一下这个事情。如有解决,我还会在该贴子中留言的。 多谢版主大人的热心回复 |
可能并非楼主所想,数据倾斜是最后map或则reduce会执行很慢。 如果有的输出文件为空,楼主,可以设置下reduce的个数。 或则最后合并下,在输出。 |
本帖最后由 lixiaoliang7 于 2014-12-25 10:28 编辑 desehawk 发表于 2014-12-25 08:46 其实关键在于,有的reduce负担太大,有的reduce负担太小。 这个问题不知道如何解决 |
楼主已经做了优化,并且从执行计划,只有一个job。 看到楼主的sql中有空值,可以做如下优化 select * from log a left outer join users b on case when a.user_id is null then concat(‘hive’,rand() ) else a.user_id end = b.user_id; 上面只是例子,楼主可以尝试,把空值替换为某个特定的值 |
然后左表的数据量只有几条,很小的。 右表大概10个G左右数据 |
这是整个执行计划,大家帮忙看一下哇:
|
好象有点思路了,我使用explain看了HIVE的执行计划 看到了
貌似Reduce的key是使用两个表关联的字段 rd_sen_smac 然后我对于数据按又进行了rd_sen_smac又做了groupby,求每个key的数量,发现数量如下:
我擦,那这个怎么搞啊… 只有四个KEY,但是又有13个reduce。。。 |