- 需求说明:
历史数据计算推荐buffer辅助运营配置
航班满足历史数据要求条件:
1.该航班近 X 个月订单量>= XX
2.该航班+同类航班近 X 个月订单量>= XX
满足条件1则使用同航班历史数据计算,不满足条件1满足条件2则使用同航班+同类航班数据计算,都不满足则不进行计算
同航班定义:
航班号一致
起飞降落机场一致
同类航班定义:
起飞落地机场一致
计划落地时间较原航班计划落地时间在±X H以内
计算规则:
1.历史数据计算:司机接到乘客时间-航班实际落地时间
2.取满足条件的该航班近X个月的数据 计算(司机接到乘客时间-航班实际落地时间)
3.剔除计算后值<X和>X的值
4.使用加权移动平均预测算法估算推荐时间
距离时间越远权重越低,越近权重越高————权重:
近X-X月0.XX,近X-X月0.XX,近X-X月0.XX,
算法公式:【近X-X个月的数据求和*0.XX+近X-X个月的数据求和*0.XX+近X-X个月的数据求和*0.XX】
/
【近X-X个月的订单量*0.XX+近X-X个月的订单量*0.XX+近X-X个月的订单量*0.XX】
5.保留整数到分钟(小数位四舍五入)
-
BI模型设计
-
开发过程
-
发现问题
sql写好后运行了很久很久没有跑出结果,根据经验来说数据不算多, 感觉运行时长不合理,猜测发生数据倾斜。
分析数据倾斜产生场景, 1.数据分布;2. 关联; 3. count(distinct 字段)。
这个项目可以首先排除3, 那么就从1和2两个场景分析。
-
慢查询分析
通过spark UI可以发现,大部分任务已经完成,但是有的task执行时间很长很长,那么就可以实锤数据倾斜了。
-
数据倾斜原因探查
通过Spark UI查看卡点的stage,在SQL里面搜索卡点stage查看是在关联除,那么此次数据倾斜属于关联场景导致。stage 752
-
分析join导致数据倾斜的分类
5.1、大量关联字段是空值
5.2、关联字段的类型不匹配
5.3、关联字段的数据分布不均匀(本次根因)
通过对关联字段的样例数探查发现是有热点数据导致数据分布不均匀
-
解决方案
6.1、 通过将热点数据和非热点数据分开算
6.2、 由于我这个case热点数据对分析没有意义,所以我直接过滤掉了这个热key -
改进结果
-
项目成果