1.目标:尽可能在有限资源的情况下,利用尽量少的资源来达到更高效的效果。今天就给大家分享一个在DDT首页概览实时性能优化算法 – 海量数据高效去重算法。
2.常规方法:采用spark sql方式去重
3.创新方法:采用spark的分区排序去重算子去重算法。性能大幅度提升,从原来5min左右下降到30s以内(数据量10亿左右)
4.使用spark的分区排序去重算子去重方法的优点
a、在于sortWithinPartitions方法返回的是按Partition排好序的DataFrame对象。我们只需在Partition排好序的
DataFrame对象后采用dropDuplicates删除相同的列,返回一个DataFrame,得到最新时间的数据。
b、这种去重方式大幅度提升了海量数据去重性能,减少了过程中shuffle操作。
5.带来的影响
a、提升了DDT实时概览计算的整体性能,解决海量数据中实时取数更新问题。
b、提高了用户体验度,为客户更加实时掌握用户产品的动态状况,提升产品价值。
C、使我们在有限的资源情况下,利用尽量少的资源来达到更高效的效果。