当数据量非常大,在同一个query中计算多个不相关列的distinct时,往往很容易出现数据倾斜现象,导致运行半天都不能得到结果。比如以下的SQL语句:select distinct(a), distinct(b), distinct(c) from tableName;a, b, c没有相关性。改...
分类:
其他好文 时间:
2014-12-14 10:35:42
阅读次数:
167
从Dremel和Impala的学习引申出了SQL查询的并行执行问题,于是借此机会深入学习一下关系数据库以及关系代数的并行计算。Speedup和ScaleupSpeedup指用两倍的硬件换来一半的执行时间。Scaleup指两倍的硬件换来同等时间内执行两倍的任务。但往往事情不是那么简单,两倍的硬件也会带来其他问题:更多CPU带来的长启动时间和通信开销,以及并行计算带来的数据倾斜问题。多处理器架构共享内...
分类:
其他好文 时间:
2014-12-13 15:12:15
阅读次数:
254
优化时,把hive sql当做map reduce程序来读,会有意想不到的惊喜。
理解hadoop的核心能力,是hive优化的根本。这是这一年来,项目组所有成员宝贵的经验总结。
长期观察hadoop处理数据的过程,有几个显著的特征:
1.不怕数据多,就怕数据倾斜。
2.对jobs数比较多的作业运行效率相对比较低,比如即使有几百行的表,如果多次关联多次汇总,产生十几...
分类:
其他好文 时间:
2014-10-31 10:13:42
阅读次数:
350
从传统数据库迁移到GP中一个重要的且经常被开发人员忽略的概念是数据分布,没有良好的设计表的分布键会导致严重的性能问题,以下函数将给开发人员及DBA检测一个表的数据倾斜情况。
-- Function: gpmg.data_skew(character varying)
-- DROP FUNCTION gpmg.data_skew(character varying);
CREATE OR...
分类:
其他好文 时间:
2014-10-14 12:35:58
阅读次数:
266
关键字情形后果join其中一个表较小,但key集中分发到某一个或几个reduce上的数据远高于平均值大表与大表关联,但是分桶的判断字段0值或空值过多这些空值都由一个reduce处理,非常慢group byGroup by维度过小,某值的数量过多处理某值的reduce非常耗时count distinc...
分类:
其他好文 时间:
2014-07-22 08:07:33
阅读次数:
180
常见案例一:空值产生的数据倾斜日志表有一部分的user_id为空或者是0的情况,导致在用user_id进行hash分桶时,会将日志由user_id为0或者为空的数据分到一个reduce上,导致数据倾斜;如:访户未登录时,日志中的user_id为空,用user_id和用户表的user_id进行关联的时...
分类:
其他好文 时间:
2014-07-21 00:25:23
阅读次数:
305
数据倾斜:数据分布不均匀,造成数据大量的集中到一点,造成数据热点;由于数据并不是平均分配的,会导致各个节点上处理的数据量是不均衡的,所以数据倾斜是无法避免的;造成数据倾斜的最根本原因:key分发不均匀造成的;常见的数据倾斜的症状1) Map阶段快,reduce阶段非常慢;2) 某些map很快,某些m...
分类:
其他好文 时间:
2014-07-20 22:18:56
阅读次数:
232
当该字段存在大量值为null或空的记录,容易发生数据倾斜;解决思路:count distinct时,将值为空的情况单独处理,如果是计算count distinct,可以不用处理,直接过滤,在最后结果中加1;如果还有其他计算,需要进行group by,可以先将值为空的记录单独处理,再和其他计算结果进行...
分类:
其他好文 时间:
2014-07-20 22:18:35
阅读次数:
1404
count(distinct key)案例explain select count(distinct session_id) from trackinfo where ds=' 2013-07-21' ;STAGE DEPENDENCIES: Stage-1 is a root stage St.....
分类:
其他好文 时间:
2014-07-20 22:16:56
阅读次数:
347