位置: 主页 > 威尼斯人网上娱乐 >

hive数据倾歪优募化威尼斯人

时间:70-01-01 08:00 来源:

  情谊提示:更多拥关于父亲数据、人工智能方面技术文字请关怀落主团弄体微信帮群号:初级父亲数据架构师!

  Hive数据倾歪

  Group By 中的计算顶消优募化?

  ?1.Map端片断凑合?

  ?先看看下面此雕刻条SQL,鉴于用户的性佩条要男和女两个值 (不知)。假设没拥有拥有map端的片断凑合优募化,map直接把groupby_key 干为reduce_key发递送给reduce做凑合,就会招致计算气不忿男衡的即兴象。固然map拥有100万个,条是reduce条要两个在做凑合,每个reduce处理100亿笔记载。? ? ? ?

  selectuser.gender,count(1) from user group by user.gende

  没拥有开map端凑合产生的计算气不忿男衡即兴象

  ? hive.map.aggr=true参数把持在group by的时分能否map片断凑合,此雕刻个参数默许是翻开的。参数翻开后的计算经过如次图。鉴于map端曾经做了片断凑合,固然还是条要两个reduce做最末的凑合,条是每个reduce条用途理100万行记载,对立优募化前的100亿小了1万

  map端凑合翻开map凑合开关缺节是翻开的,条是不是所拥局部凑合邑需寻求此雕刻个优募化。考虑先面的sql,假设groupby_key是用户ID,鉴于用户ID没拥有拥有重骈的,故此map凑合没拥有拥有太父亲意思,同时芡费资源。?

  select?user..id,count(1)?from?user?group?by?user.id?

  ?hive.groupby.mapaggr.checkinterval?=?100000

  Hive.map.aggr.hash.min.reduction=0.5

  ?下面此雕刻两个参数把持关掉落map凑合的战微。Map末了尾的时分先尝试给前100000?笔记载做hash凑合,假设凑合后的记载数/100000>0.5说皓此雕刻个groupby_key没拥有拥有什么重骈的,又持续做片断凑合没拥有拥有意思,100000?以后就己触动把凑合开关关掉落,在map的log中会看到下面的提示:2011-02-23?06:46:11,206?WARN?org.apache.hadoop.hive.ql.exec.GroupByOperator:?Disable?Hash?Aggr:?#hash?table?=?99999?#total?=?100000?reduction?=?0.0?minReduction?=?0.52.

  ?数据倾歪?

  畅通日此雕刻种情景邑是在拥有distinct出产即兴的时分,譬如次面的sql,鉴于map需寻求管所拥局部user.id?

  ,map凑合开关会己触动关掉落,招致出产即兴计算气不忿男衡的即兴象,条要2个redcue做凑合,每个reduce处理100亿笔记载。

  ?

  ?select?user.gender,count(distinct?user.id?

  )?from?user?group?by?user.gender

  )?from?user?group?by?user.gender

  hive.groupby.skewindata=true

  参数会把下面的sql翻译成两个MR,第壹个MR的reduce_key是gender+id。鉴于id是壹个遂机散列的值,故此此雕刻个MR的reduce计算是很平分的,reduce完成片断凑合的工干

  MR1第二个MR完成终极的凑合,统计男女的distinct id值,数据流动如次图所示,每个Map条输入两笔记载,故此固然条要两个redcue计算也没拥有拥有相干,绝全片断计算量曾经在第壹个MR完成

热门文章
最新文章
Copyright @ 2011-2017 Power by DedeCms