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

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

楼主:资源分享 [官方] · 2020-6-22 ·  浏览5126 · 编程源码 · 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

资源分享 [官方]

order by:全局排序,缺陷是只能使用一个 reduce
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

一定要区分这四种排序的使用方式和适用场景
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

四、怎样做笛卡尔积
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

当 Hive 设定为严格模式(hive.mapred.mode=strict)时,不允许在 HQL 语句中出现笛卡尔积, 这实际说明了 Hive 对笛卡尔积支持较弱。因为找不到 Join key,Hive 只能使用 1 个 reducer 来完成笛卡尔积。
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

当然也可以使用 limit 的办法来减少某个表参与 join 的数据量,但对于需要笛卡尔积语义的 需求来说,经常是一个大表和一个小表的 Join 操作,结果仍然很大(以至于无法用单机处 理),这时 MapJoin才是最好的解决办法。MapJoin,顾名思义,会在 Map 端完成 Join 操作。 这需要将 Join 操作的一个或多个表完全读入内存。
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

PS:MapJoin 在子查询中可能出现未知 BUG。在大表和小表做笛卡尔积时,规避笛卡尔积的 方法是,给 Join 添加一个 Join key,原理很简单:将小表扩充一列 join key,并将小表的条 目复制数倍,join key 各不相同;将大表扩充一列 join key 为随机数。
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

精髓就在于复制几倍,最后就有几个 reduce 来做,而且大表的数据是前面小表扩张 key 值 范围里面随机出来的,所以复制了几倍 n,就相当于这个随机范围就有多大 n,那么相应的, 大表的数据就被随机的分为了 n 份。并且最后处理所用的 reduce 数量也是 n,而且也不会 出现数据倾斜。
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

五、怎样写 in/exists 语句
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

虽然经过测验,hive1.2.1 也支持 in/exists 操作,但还是推荐使用 hive 的一个高效替代方案:left semi join
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...

资源分享 [官方]

比如说 :
发布于2020-6-22

回复列表

  • 内容加载中...

说点什么...
登录注册 后才可进行评论
签到
51人签到
已签0天
  • 46617帖子
  • 1936557热点量
  • 184862火热值