当前位置: 首页 > news >正文

网站开发研发设计yandx引擎入口

网站开发研发设计,yandx引擎入口,网站建设四不问题,58同城网站建设 推广HIVE 数据倾斜浅谈 一、数据倾斜现象 map100%,reduce一直卡在一个值#xff0c;如99%。 二、数据倾斜的原因 数据按key的hash值分配到reduce中#xff0c;如果有的key值比较集中#xff0c;就会导致某个或某些reduce分配的数据量太大#xff0c;这样当其他reduce运行完毕…HIVE 数据倾斜浅谈 一、数据倾斜现象 map100%,reduce一直卡在一个值如99%。 二、数据倾斜的原因 数据按key的hash值分配到reduce中如果有的key值比较集中就会导致某个或某些reduce分配的数据量太大这样当其他reduce运行完毕分配数据量过大的reduce仍在运行导致reduce进度一直卡着不动这种现象被称为数据倾斜。造成数据倾斜的根本原因就是key值分布不均匀。 三、数据倾斜的操作 join、group by、Count Distinct 四、数据倾斜的处理方法 1. 参数配置方案 1.groupby、count distinct数据倾斜 hive.map.aggr true hive.groupby.skewindatatrue有数据倾斜的时候进行负载均衡当选项设定为 true生成的查询计划会有两个 MR Job。第一个 MR Job 中Map 的输出结果集合会随机分布到 Reduce 中每个 Reduce 做部分聚合操作并输出结果这样处理的结果是相同的 Key 有可能被分发到不同的 Reduce 中从而达到负载均衡的目的第二个 MR Job 再根据预处理的数据结果按照 Key 分布到 Reduce 中这个过程可以保证相同的 Key 被分布到同一个 Reduce 中最后完成最终的聚合操作。 2.join 的数据倾斜 hive.optimize.skewjointrue如果join过程中出现了数据倾斜应该设置为true set hive.skewjoin.key100000这个是join的键对应的记录条数超过这个值则会进行优化优化措施正常是只有一个job的优化后会有两个job。当倾斜Key值达到100000以上的时候hive会把不倾斜的key进行join倾斜的 key 的数据将会被写入HDFS临时文件hive会再启动一个job然后将倾斜的数据进行map 端join最终将两个结果合并。   但是这种处理方式不是所有地方都有效。 2. sql优化方案 1. count distinct、group by 当group by key为空时如果只是计算count distinct可以不用处理直接过滤在最后结果中加1。如果还有其他计算需要进行group by可以先将值为空的记录单独处理再和其他计算结果进行union。count(distinct user_id)采用 select count(1) from (select user_id from log group by user_id) t;来替换count(distinct)完成计算。 在业务逻辑优化效果的不大情况下有些时候是可以将倾斜的数据单独拿出来处理。最后union回去。 2. 空值产生的数据倾斜 1.把空值单独处理再与其他值的处理结果进行uinon all. 2.把空值的key变为随机数。 select *from log aleft join users bon case when a.user_id is null then concat(‘hive’,rand() ) else a.user_id end b.user_id;方法2比方法1效率更好不但io少了而且作业数也少了。解决方法1中 log读取两次jobs是2。解决方法2 job数是1 。这个优化适合无效 id (比如 -99 , ’’, null 等) 产生的倾斜问题。把空值的 key 变成一个字符串加上随机数就能把倾斜的数据分到不同的reduce上 ,解决数据倾斜问题。 3. 条件中等号两端数据类型不同 类型转换过程中可能会出现转换失败比较常见的是string转int失败后会造成大量null值进而流入同一个reduce导致数据倾斜。   处理办法就是在条件中进行类型转换保证两端数据类型一致。 4.小表关联大表 Map端join会使所有的 maptask 节点都装载小表 b 的所有数据然后大表 a 的 一个数据块数据比如说是 a1 去跟 b 全量数据做链接。实现方法 select /* mapjoin(a) */ a.id aid, name, age from a join b on a.id b.id;在 hive0.11 版本以后会自动开启 map join 优化由两个参数控制 set hive.auto.convert.jointrue; //设置 MapJoin 优化自动开启 set hive.mapjoin.smalltable.filesize25000000 //设置小表不超过多大时开启 mapjoin 优化5.小表不小关联大表——处理大表文件使其变为可加载到内存的小表 可以根据业务逻辑只取必要数据(行、列两个维度限制)尽量减小数据大小使之成为小表。比如 当分析某段时间的日志表logs数据是亿级的用户表users数目有数十万把users当小表做map join会超出内存时我们可以把users行数减少到只取出logs中包含的users然后进行列裁剪这样可能大大缩减users所占空间从而可以实现map join。 select /*mapjoin(t1)*/* from log t1 left outer join (select /*mapjoin(t11)*/ d.*from ( select distinct user_id from log ) t11 join users t12 on t11.user_id t12.user_id ) t1 on t0.user_id t1.user_id;6.大表关联大表 两个Hive表进行join的时候如果数据量都比较大那么此时可以看一下两个Hive表中的key分布情况。 6.1 如果出现数据倾斜是因为其中某一个Hive表中的少数几个key的数据量过大而另一个Hive表中的所有key都分布比较均匀 方案实现思路 对包含少数几个数据量过大的key的那个表通过sample算子采样出一份样本来然后统计一下每个key的数量计算出来数据量最大的是哪几个key。然后将这几个key对应的数据从原来的表中拆分出来形成一个单独的表并给每个key都打上n以内的随机数作为前缀接着将另一个表也过滤出来这几个key对应的数据并形成一个单独的表将每条数据膨胀成n条数据这n条数据都按顺序附加一个0~n的前缀。再将附加了随机前缀的独立表与另一个膨胀n倍的独立表进行join此时就可以将原先相同的key打散成n份分散到多个task中去进行join了。不倾斜的数据照常join即可。最后将两个join的结果使用union all算子合并起来即是最终结果。比较集中的key值如果不想做数据膨胀也可以使用map join将记录较少的表加载到内存中。 方案优点对于join导致的数据倾斜如果只是某几个key导致了倾斜采用该方式可以用最有效的方式打散key进行join。而且只需要针对少数倾斜key对应的数据进行扩容n倍不需要对全量数据进行扩容。避免了占用过多内存。 方案缺点如果导致倾斜的key特别多的话比如成千上万个key都导致数据倾斜那么这种方式也不适合。 方案二分桶joinmap join 参见https://blog.csdn.net/Samaritan_H/article/details/79090103 6.2 如果出现数据倾斜的key比较多 方案一我们可以按6.1的方式对倾斜表所有数据加上n以随机前缀对另一张表进行全表数据膨胀操作然后进行关联。 这样可以缓解数据倾斜问题。但是比较消耗内存资源。 方案二依旧分离出比较集中的key值记录另一张表也取出相应的key值记录然后开启map join进行关联操作对结果进行uion。 方案三分桶joinmap join 参考文献https://blog.csdn.net/jin6872115/article/details/79878391
http://www.pierceye.com/news/449292/

相关文章:

  • 每年网站备案抽查惠州营销网站建设
  • 四川网站建设seo友汇网网站建设
  • 企业家居网站建设做公司网站方案
  • 特性设计的网站营销型网站建设的五力原则
  • 网站布局设计工具装修室内设计培训学校
  • 哈尔滨网络科技公司做网站中国建设官方网
  • 紫川网站建设做画找图网站
  • 郑州快速建站公司合肥学做网站app的学校
  • 除了做视频网站还能做什么网站wordpress手机站如何做
  • 域名注册最好的网站人才网站
  • 网站建设咨询云尚网络中铁十二局出国招工
  • 建站系统推荐做网站在哪里做
  • 贵州建设工程招标协会网站wordpress黑白主题
  • 怎么免费建立自己网站扁平化网站设计
  • 可以自己做漫画的网站北仑营销型网站制作
  • 免费网站统计代码有什么样的网站开发
  • 文山微网站建设湖南人工智能建站系统软件
  • 做网站时候编代码wordpress 技术博客主题
  • 成立网站建设工作领导小组seo网站关键词优化软件
  • 怎么兼职做网站网站建设 运维 管理包括
  • 乐清市住房和城乡建设规划局网站专业做家居的网站
  • 做3d打印网站苏州建设工程人才招聘网信息网站
  • 网站建设丂金手指科杰wordpress中logo大小
  • 微餐饮网站建设被老板抓到用公司产品做自己的网站
  • 软件公司网站模板下载定制搭建网站
  • 网站建设实训报告要求怎么做公司门户网站
  • 深圳规划建设局网站wordpress改变访问目录
  • dw怎么做购物网站o2o平台都有哪些
  • 阿里云备案多个网站吗应用商店下载app软件
  • 响应式网站手机端尺寸网站开发培训心得