10 月 24 日,易观数科第四届 OLAP 算法大赛 正式落下帷幕,本届大赛由 UCloud 资助、思否、infoQ、CSDN 等技术媒体提供反对。历时 40 多天,经验了大赛报名、测试体验、正式较量等重重环节,氪信团队、火山酱油团队、谦谦团队 怀才不遇,夺得前三甲,处分别离为 6 万、3 万、1 万现金大奖。授奖仪式在 10 月 24 日的 2020 易观 A10 数据智能峰会开发者日上进行,易观 CTO 郭炜为获奖者颁奖。
随后,冠军团队——氪信团队进行了较量分享。氪信团队去年就曾以 300 毫秒精确解决 8 亿条行为数据 的问题夺得了易观第三届 OLAP 算法大赛冠军,往年面对不一样的题目和规定,毫不逞强,再度折冠!
以下为冠军团队在易观 A10 数据智能峰会上的分享:
赛题解读
往年的赛题,相当于提供了一个 APP 用户经营的场景,原始数据为十亿量级的用户行为数据,比方某个用户拜访了 AI,做了一个行为比方查看一件商品、购买等,而平台有 5000 万的用户数据,这也就象征要将用户属性、用户分群关联到数十亿事件的序列下面,这其实是一个在绝对无限的机器环境下有挑战的问题。
而正式较量时应用的三台 8C16G 的机器,要把查问工作做到几秒甚至几百毫秒,这其实就是算法自身的一个重大挑战。
本届赛事难点
本届算法大赛,选手尽管提前 3 天拿到服务器和正式较量数据,看起来有较富裕的预处理工夫。但在较量前 15 分钟,选手们会收到 100 多万的增量数据,工夫短到不足以对全量数据做预计算、建 cube。
第四届 OLAP 算法大赛以事件剖析为主题,题目要求进行 event 表和 profile 表的关联,两个表之间数据量比照为 1000000000 VS 50000000,join 开销过大。此外,题目还考查参赛者计算去重小计数、中位数等指标的分布式计算办法,较为简单。
解题思路与技巧
氪信团队选取了 ClickHouse + 氪信准实时剖析平台来实现本次较量,基于用户 ID 和日期别离建设分片,而后依据题目类型自行抉择适合的分片来执行计算。采纳了列存 + 低基数(low cardinality)优化 + 数据压缩的存储计划,计算计划上则采纳零共享 MPP+CPU 指令集优化 + 数据加热的形式。
10 亿条对 5000 万条的关联,如果咱们称之为绝对较大的 join,那么在三台配置较低的机器下,内存和硬盘的应用都要十分审慎。氪信团队的解决方案是:
首先,通过离线工作的形式,将历史数据整合成大宽表,并将未能胜利关联的 event 表数据抽离进去;
随后,在获取到 100 万条 event、5 万条 profile 的增量数据后,将增量 event 与未关联的历史 event 数据、全量 profile 做关联,这样须要 join 的数据仅为数百万对 5000w 条数据关联,大大降低了内存压力;
最初,做多维查问时,仅须要对预处理好的单表进行操作,而这正是 clickhouse 善于的工作。
教训分享
较量时到底是谋求极致的速度、还是灵活性 / 回退能力?氪信团队在分享中提到,LZ4 的解压性能是次要瓶颈;在计算小计 / 总计时,节约了一次实现的扫描过程,能够用 -Resample 组合并扫描;通过预排序 / 预分组则能够节俭去重计数的开销。
随着颁奖仪式的完结,易观第四届 OLAP 算法大赛至此圆满收官。自 8 月份开启选手报名通道以来,收到了来自爱奇艺、哔哩哔哩、中国移动、中科院计算所、中南大学等超百家团队的报名。除了冠军团队在会上的分享,亚军酱油团队、季军谦谦团队也别离提交了问难 PPT,前三甲的源代码也都将开源进去供爱好者浏览学习。
可返回算法大赛官网查看:
http://ds.analysys.cn/portal/…
作为国内 OLAP 算法畛域内的重要赛事,易观近四年来的保持旨在推动国内 OLAP 技术的交换,荟聚算法智慧,为推动数据计算和利用能力、践行数据能力平民化而致力。期待明年有更多团队退出算法大赛!