打开APP

卫冕OLAP 算法大赛冠军 氪信“列式计算引擎”C位亮相

2020-11-09 16:27 网络

易观OLAP 算法大赛是国内数据库和在线分析领域的重要赛事,直接影响了很多科技公司的技术选型。大赛荟聚了数千位算法爱好者,美团点评、阿里云、小米、联通等头部科技企业,北大、北邮、中科院计算所等科研单位都曾参与过比赛。今年10月,凭借丰富的数据场景处理经验和技术落地能力,氪信团队成为*成功解对所有赛题的队伍,以接近满分的成绩成功卫冕。

两届OLAP 算法大赛中,都出现了氪信“制胜法宝”——“列式计算引擎”的身影。2019年,氪信团队凭借氪信列式计算引擎,创下300毫秒准确处理8亿条行为数据的记录,以相 第 名近百倍的性能赢得 赛冠军,验证了氪信列式计算引擎在 规模机器学习的平台技术优势。今年的赛题以“事件分析”为题目,提出要通过更加精准、智能的数据算法,对不断产生的用户行为事件及流量数据进行高效管理,更加考察参赛团队的实际场景应用能力。

以下为氪信团队的经验分享:

赛题解读

今年的赛题,相当于提供了一个APP用户运营的场景,原始数据为十亿量级的用户行为数据,比如某个用户访问了APP,做了一个行为比如查看一件商品、购买等,而平台有5000万的用户数据,这也就意味要将用户属性、用户分群关联到数十亿事件的序列上面,这其实是一个在相对有限的机器环境下有挑战的问题。

而正式比赛时使用的三台8C16G的机器,要把查询任务做到几秒甚至几百毫秒,这其实就是算法本身的一个重大挑战。

本届赛事难点

本届算法大赛,选手虽然提前3天拿到服务器和正式比赛数据,看起来有较富裕的预处理时间。但在比赛前15分钟,选手们会收到100多万的增量数据,时间短到不足以对全量数据做预计算、建cube。

第四届OLAP算法大赛以事件分析为主题,题目要求进行event表和profile表的关联,两个表之间数据量对比为1000000000 VS 50000000,join开销过大。此外,题目还考察参赛者计算去重小计数、中位数等指标的分布式计算方法,较为复杂。

解题思路与技巧

氪信团队选取了“列式计算引擎 + 准实时分析平台”来完成本次比赛,基于用户ID和日期分别建立分片,然后根据题目类型自行选择合适的分片来执行计算。采用了列存+低基数(low cardinality)优化+数据压缩的存储方案,计算方案上则采用零共享MPP+CPU指令集优化+数据加热的方式。

10亿条对5000万条的关联,称之为相对较大的join,在三台配置较低的机器下,内存和硬盘的使用都要非常谨慎。氪信团队的解决方案是:

首先,通过离线任务的方式,将历史数据整合成大宽表,并将未能成功关联的event 表数据抽离出来;随后,在获取到100万条event、5万条profile的增量数据后,将增量event 与未关联的历史event数据、全量profile做关联,这样需要join的数据仅为数百万对5000万条数据关联,大大降低了内存压力。

经验分享

比赛时究竟是追求*的速度、还是灵活性/回退能力?氪信团队基于去年的经验,设计了一套可以根据赛题变化灵活调整的方案,以确保能正确完成每一道题。氪信团队在分享中提到,方案还有进一步优化的空间:LZ4的解压性能是主要瓶颈;在计算小计/总计时,常规方法浪费了一次完成的扫描过程,可以用-Resample 组合并扫描;通过预排序/预分组则可以节省去重计数的开销。

氪信列式计算引擎是一款主要针对大规模数据分析、特征计算、图计算等任务研发的高性能计算引擎,侧重于*化计算性能、提高计算资源利用率;在列式计算引擎的基础上上,氪信研发了准实时分析平台,提供亚秒级大规模数据计算性能,借助准实时级别的数据分析查询能力,以“快、稳、准”直击析场景的诸多痛点。经评委组验证,氪信基于列式计算引擎和准实时分析平台产生的数据处理方法,在准确性、可扩展性上均具有显著优势,比传统方案处理效能提升数十倍。未来,氪信将不断推进产品优化和应用创新,以人工智能技术锤炼行业数字化、智能化转型新“利器”。

(免责声明:本文转载自其它媒体,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。请读者仅做参考,并请自行承担全部责任。)

相关资讯

【声明:本页面数据来源于公开收集,未经核实,仅供展示和参考。本页面展示的数据信息不代表投资界观点,本页面数据不构成任何对于投资的建议。特别提示:投资有风险,决策请谨慎。】