Apache Kylin 在马蜂窝数据分析团队的实际应用
为什么 Apache Kylin 是分析师的标配技能,即使你没用过也一定听说过或者更少,但对于数据分析师来说可能不是那么熟悉给你。在马蜂窝,使用 Kylin 为公司搭建数据仓库已经成为数据分析师日常的一部分。这是分析师的标准技能。
在基于数据流的分层的传统数据团队组织结构中,数据分析团队大部分是数据平台的使用者,通过各种数据源提取数据进行分析,更多的是基于大数据。技术兴起之前的组织结构。
从业务角度:随着业务的复杂性和业务发展的速度越来越快,马蜂窝公司从最初的社区,到策略,再到逐渐演变为酒店和电商平台。过去两年。业务线涉及用户行前、行中、行后的各个环节,打造整个旅游产业的闭环。马蜂窝就像一个内部集团公司。每个团队的业务情况、数据需求和开发流程都有很大不同。随着自身业务的复杂性,传统的组织结构和实践已不再足够。适应当前业务发展要求。
从数据分析的角度来看,由于组织架构的分类,往往很容易避免错误,延长数据项目周期,并导致层错位带来的误解,进而引发潜在问题。
从技术角度:随着Kylin等相关大数据技术的成熟,各家公司的数据结构相似,重点也逐渐转向其工作的基础架构和实现,以充分吸纳各种大数据- 相关技术以及如何利用技术和数据的全部价值。
通过数据平台的制作,赋予了以数据分析师为代表的独立开发伙伴在数据平台上的协作能力。
作为专注于研发的数据平台团队,我们从封闭的数据流开发者转型为开放的数据平台产品开发者和构建者,充分发挥数据流中的每个环节,并以技术专长将数据融入到该环节中。通过数据产品开放,让分析师和其他数据用户接入并构建开放平台。
作为连接数据与业务的主力军,数据分析师从顶级数据使用者转型为整个数据生命周期的管理者和架构师。它可以对数据进行末端控制,控制数据的来源。 。职责包括定义数据存储位置、设置清理规则、设计和实施数据仓库、离线分析、部署仪表板、发布 API 以及开发应用程序、数据项目等。
Kylin作为一个严肃的OLAP引擎,已经融入到数据平台产品开发中。通过第二个简单的开发和引入,可以开放仓库的容量,大大降低了建仓库的门槛,使得数据分析师能够在其上定义和建仓库是好事,这就带来了次要问题。响应速度,大大提高了分析师日常数据请求的效率,以及相关数据在业务领域的应用。
Kylin 在马蜂窝分析师团队的日常
以马蜂窝的客服质量统计需求为例,业务部门希望更新临时查询方式,将日常 SQL 作为后端,可能会用到每日基础。后台主要统计指标有:从门店规模、管家规模、产品规模、目的地规模等方面来统计销售业绩和服务质量。销售业绩和服务质量的具体标准如下:
在Kylin成为数据分析师的标准工具之前,这样的后端需要开发前后台/数据分析师/工程师和数据开发工程师一起工作。约1个月。开发人员很容易因为不了解业务而在符号统计方面出现问题。
目前在马蜂窝,审核员和申请人只需要说明需求,定义统计主题,每个主题下统计哪些维度,每个维度下有哪些维度,以及统计粒度和统计度量,然后就可以了可依托数据产品,耗时一周左右独立完成统计后端搭建,开发效率较一般提升10倍以上。具体工作流程如下。
解释完要求后,数据分析师通过三种方式检查基础数据的准确性:
- 第一个是根据设计文件逐条编辑日志,看看是否与报告相符。具有明确的标准和逻辑;
- 二是通过样本对基础数据进行描述性统计,包括各个字段的均值/中位数/四分位数/极值/默认值的统计,以便对统计中的数据有一个了解。等级;
- 三是基础节点数据和开发实验的逻辑校对,以及数据质量仪表板的创建。对于核心数据,测试团队会编写自动化测试用例进行数据验证,以双重检查数据质量,确保生成的数据尽可能准确地完成。永远不会出现问题,如果出现问题,可以快速识别并修复。
数据经过分析师验证后,将使用VIE方法根据统计逻辑对数据进行清理和组织。在本例中,我们需要根据匹配 IM 会话信息、产品密钥信息、客户服务正常运行时间信息和订单信息的主题创建事实表和维度表。一旦了解了事实表和维度,就可以快速使用 Kylin 构建 CUBE。
使用Kylin时存在三个潜在问题:
- 首先,分析人员对数据库的恒星模型、冰模型或星系模型的理解不够,很容易不会。去掉维度表,使得输出的是一张大的业务表,基于它创建的CUBE具有很高的扩展率。它只是利用Kylin的预计算能力快速生成统计结果;
- 其次,分析师很难平衡计算时间和存储空间。沟通中往往根据业务需求强调响应速度,强加某些在CUBE中不易使用的维度,导致CUBE数量多、开发速率高、占用资源、海量计算和存储。 ;
- 三这是因为分析师不了解Kylin的核心算法,改进CUBE的机会有限。目前的解决方案是,审核者创建好CUBE后,会有专人负责审核和改进。
分析师创建CUBE后,在MDW(注:马蜂窝统计库)中使用SQL创建索引、定义维度。 MDW 并不存储来自 CUBE 的数据作为数据源,而只保存用于索引计算的 SQL(计算逻辑),并在需要时将数据实时获取到 Kylin 中。
MDW有通用的API接口,可以连接马蜂窝的数据仪表板系统。分析师利用看板数据系统将MDW指标按照主题/脆弱性等分组到特定的看板组中,并在看板与看板之间建立跳跃连接。内部看板取决于类似于MDW的不同维度的管理。钻孔和滚压。目前,马蜂窝的客户服务质量统计基本完整(如下图)。
Kylin 进军数据领域的经历
如上图所示,数据分析师在日常工作中突发的问题大部分都是基于 MQL(OLAP 平台)来搜索数据。 MQL 内置了对 Presto、Hive、Kylin 和 Phoenix 等不同 SQL 引擎的支持。
随着业务的发展,数据分析师提出的Presto SQL功能往往受到Presto集群的并发量以及SQL对一些大的资本支出的影响的限制。我们引入了子集群队列调度器来确保分析器的SQL尽可能高效。
我们每天有 160 多个用户使用 MQL,每天约有 2000 多个 SQL 查询。在上图的工作位置中,我们可以看到,随着Presto SQL的启动,数据库的搜索时间逐渐增加,需要等待半个小时甚至一个小时,不要用它们来执行SQL操作。
自2017年下半年马蜂窝大数据平台引入Kylin以来,数据分析师的数据搜索性能大幅提升,几秒内的响应速度。现在,数据分析师将 Kylin SQL 放在 MQL 上后,就不需要排队和第二次回答了。相比之前的 Presto SQL 工作,Kylin 减少了分析师数十倍、数百倍的等待时间,给数据分析师的工作带来了巨大的成功。
目前在马蜂窝Kylin平台,我们有80+个Cube运行在Kylin中,90%的Cube在5秒内响应,每天约有50,000+个Kylin调用。我们的立方体覆盖了马蜂窝的所有业务线,比如电商、酒店、搜索、推广、用户增长等业务线。
下面将分3个部分来讨论Kylin在马蜂窝的实战。
1。 Kylin在马蜂窝数据平台的应用
如上图所示,数据分析师数据搜索已经标准化集成接入。 MQL是马蜂窝的OLAP平台。 数据分析师通过所有MQL发送SQL后,系统根据分析师选择的引擎将SQL分发到不同的Presto平台和Kylin平台。
此外,系统通过SQL解析器获取分析师SQL中的字段列和条件列,以便我们有针对性地优化Kylin Cube。 MQL-T-API 是外部数据检索 API。开发人员使用 MQL 模板创建模板后,与其他工程师共享模板链接。工程师可以通过电话在短时间内访问各种数据。数据报告和业务系统的幕后(例如推送目标)。
如图所示,我们有一个probe模块,通过probe来监控和评估审查员提交的SQL。根据需求,我们将发布分析模块的报告并发送给审稿人,以便他们逐步将Presto SQL转换为Kylin Cube。这样,通过探针模式,我们可以不断寻找并压榨Kylin Cube的增长点,提高分析师的工作效率。
2。 Kylin 在马蜂窝数据平台的时间线流程
如上图所示,在数据仓库中,我们按照不同的主题进行分层。每一层都会有不同的数据表,并且会对不同的数据表产生依赖。沟通。在马蜂窝数据平台中,引入了AirFlow来完成基于DAG的谱系参与系统。
在Kylin平台中,非常重要的一步就是保证Cube的准备时间、构建数据的正确性以及低信号场计算的运行。
由于Kylin的数据源全部来自Hive存储库,并且两个表都有物理表和视图,因此我们将包含其中包含数据的表包含在内。根据Kylin Project,使用解析器获取物理表依赖于表视图,然后AirFlow调度平台找到所有表或物理视图的状态并激活构建Kylin Cube,直到它们准备好。
在整个数据链领域,我们还需要通过系统监控各个表的状态,并进行两次Kylin Cube的构建,保证统计和数据使用情况的准确。
3。 Kylin 上传到马蜂窝数据平台的标准流程
如上图所示,这是启动新 Cube 之前的标准流程。随着马蜂窝公司的不断发展,数据分析师团队的队伍也越来越大。需要开发标准化流程以确保在线立方体非常良好和稳健。目前我们分为两组集群,测试集群和生产集群。
数据分析师在测试集群中按照要求设计好立方体后,我们将按照标准立方体设计规则对新立方体进行检查。判断立方体足够好后,只需将模型和立方体元数据传输到生产单位,每天进入调度系统正常构建即可。在生产俱乐部中我们也会对每个Cube请求进行二次审核,并根据请求规则对Cube进行二次优化。
此外,我们不断学习行业经验,根据自身经验,标准化制定魔方设计的基本规则,并将规则提供给每一位数据分析师,让他们成为标准的魔方管理者。 。
结论
麒麟在马蜂窝正式使用不到一年。作为数据分析师的常用能力,它是在使用过程中逐渐积累经验而形成的。这个时期需要很多数据分析团队和现场研发团队一个强大的工具,来服务更多的业务领域,提高效率。马蜂窝不同地方的合作伙伴的使用。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。