首页 > 编程源码 > Hive学习之路:Hive的数据倾斜

Hive学习之路:Hive的数据倾斜

楼主:资源分享 [官方] · 2020-6-22 ·  浏览5121 · 编程源码 · ID:
1、什么是数据倾斜?
由于数据分布不均匀,造成数据大量的集中到一点,造成数据热点

2、Hadoop 框架的特性
  A、不怕数据大,怕数据倾斜
  B、Jobs 数比较多的作业运行效率相对比较低,如子查询比较多
  C、 sum,count,max,min 等聚集函数,通常不会有数据倾斜问题

文章来源于互联网。
- 版权声明 - 1、本帖所有言论和图片等纯属网友个人意见,与流星社区立场无关;
2、其他单位或个人使用、转载或引用本帖时必须同时征得该帖子作者资源分享流星社区的同意;
3、备注原文地址:https://bbs.liuxingw.com/t/31248.html,可忽略第2条;
4、帖子作者需承担一切因本文发表而直接或间接导致的相关责任;
5、如本帖内容或部分内容转载自其它媒体,这并不代表本站赞同其观点和对其真实性负责;
6、如本帖若为资源类,将仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您安装或使用的设备中彻底删除上述内容;
7、如果您喜欢该程序,请支持正版软件,购买注册,可以得到更好的正版服务;
8、如本帖侵犯到任何版权或违法问题,请立即邮件告知我们,我们将及时予以处理。
161条回复 |  最后回复于2020-6-22

资源分享 [官方]

以大表 a 和小表 b 为例,所有的 maptask 节点都装载小表 b 的所有数据,然后大表 a 的 一个数据块数据比如说是 a1 去跟 b 全量数据做链接,就省去了 reduce 做汇总的过程。 所以相对来说,在内存允许的条件下使用 map join 比直接使用 MapReduce 效率还高些, 当然这只限于做 join 查询的时候。
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

在 hive 中,直接提供了能够在 HQL 语句指定该次查询使用 map join,map join 的用法是 在查询/子查询的SELECT关键字后面添加/*+ MAPJOIN(tablelist) */提示优化器转化为map join(早期的 Hive 版本的优化器是不能自动优化 map join 的)。其中 tablelist 可以是一个 表,或以逗号连接的表的列表。tablelist 中的表将会读入内存,通常应该是将小表写在 这里。
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

MapJoin 具体用法:
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

在 hive0.11 版本以后会自动开启 map join 优化,由两个参数控制:
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

如果是大大表关联呢?那就大事化小,小事化了。把大表切分成小表,然后分别 map join
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

那么如果小表不大不小,那该如何处理呢???
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

使用 map join 解决小表(记录数少)关联大表的数据倾斜问题,这个方法使用的频率非常 高,但如果小表很大,大到 map join 会出现 bug 或异常,这时就需要特别的处理
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

举一例:日志表和用户表做链接
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

users 表有 600w+的记录,把 users 分发到所有的 map 上也是个不小的开销,而且 map join 不支持这么大的小表。如果用普通的 join,又会碰到数据倾斜的问题。
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

改进方案:
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...
登录注册 后才可进行评论
签到
27人签到
已签0天
  • 46611帖子
  • 1936546热点量
  • 184841火热值