数据分布倾斜性风险浅析
数据分布倾斜性指的是数据分布过度集中于数据空间的某端,造成“头重脚轻”或者“比萨斜塔 ”等不均匀的分布特点。
1 效率上的“瓶颈”
假如在大型商场中,共有 A,B1,B2…..B9 十家店铺,其中 A 店铺中有 99W 商品, B1,B2….B9 这九家店铺分别有 1W 商品。我们要统计商场中商品总数,计算初,采用 HASHMAP 作为存储结构,其中 Key :店铺 Value :商品。我们的计算过程是先统计每个店铺的商品总数,最后将结果累加。可以发现,由于 A 有 99W 商品,按照 1+1 的累积方式(假如 1+1 耗时 1 秒),我们要加 99W 个 1 才能得到 A 店铺的商品总数(总耗时 99W 秒),而 B1,B2….B9 只需分别累加 1W 个 1 (分别耗时 1W 秒),而为了得到商场中的商品总数,我们必须等待所有店铺都分别累计结束才能处理总和,显而易见,此时运算瓶颈便集中在 A 店铺的商品累计上。
这类状况经常发生在分布式运算过程中,比如 Hadoop Job 计算,因为 map/reduce 过程中是以 Key-value 形式来处理数据,假如某 key 下的数据量太大,会导致整个计算过程中 move/shuffle/sort 的耗时远远高于其他 key ,因此该 Key 变成为效率“瓶颈”。一般解决办法是,自定义 partitioner ,对所有的 Value 进行自定义分组,使得每组的量较平均,从而解决时间瓶颈问题。
2 数据分析结果的“以偏概全”
同样使用上述的“商场”案例,并且在此基础上我们假设 A 店铺 ,B9 店铺是卖低端商品,而 B1,B2…..B8 是卖高端商品,销量较小。如果我们要根据商品销售状况分析店铺在买家当中的受欢迎程度。由于 A 店铺本身商品量大,而且定位的销售价位是属于薄利多销,如果只从销售量的考虑,我们会以为 A 店铺在商场中是最受买家欢迎的,造成“片面”的分析结果。
其实,遇到这种情况,我们首先的分析卖家性质和买家性质,并且使用相对量来作为评估值,比如 A 店铺卖低端商品,日销售量 1W 商品, 1W/99W<1%, 而 B9 店铺卖低端商品,日销售量 5K 商品, 5K/1W=50%, 所以在低端买家中,低端商品店铺 B9 应该是最受欢迎的。
上一篇: matplotlib绘图的几种方式
下一篇: jquery选择器 jqueryhtml