Kyligence AI 服务 - 让大模型完成准确、可靠的数值计算和回答! 立即了解更多
AI 数智助理
Kyligence Zen Kyligence Zen
Kyligence Enterprise Kyligence Enterprise
Kyligence Turbo Kyligence Turbo
指标平台解决方案
OLAP 解决方案
行业解决方案
客户总览
金融
零售
制造
医药
其他
云平台
BI
寻求合作
资源
Kyligence Enterprise
Kyligence Zen
培训
Apache Kylin
Byzer
Gluten
博客
关于
市场活动
Apache Kylin 所依赖的复杂的环境配置经常让初入门的小伙伴们晕头转向,社区开发者验证 patch 的时候也多有不便。轻量级的部署方式「Kylin Docker Image」的出现完美地解决了这个老大难问题,上线后的短短 6 个月时间里被 pull 了 2.9 k+ 次,来自蚂蚁金服的朱卫斌同学正是这个便捷工具的作者。
除了 Docker Image,卫斌的源码阅读文章《可能是全网最深度的 Apache Kylin 查询剖析》一经推出也收获了公众号、CSDN 等平台上的满满阅读量,社区邮件组也经常有卫斌同学的身影。凭借在社区中独特的影响力,卫斌同学被评选为「Kylin Ambassador」。让我们来看看卫斌「混迹」社区的经验分享,非常适合初入门 Kylin 的同学学习~
Q:可以简单介绍下自己吗?
A:目前就职于蚂蚁金服,曾就职于金山软件,主要工作是大数据平台建设、大数据计算引擎优化。熟悉 Kylin、Spark、Calcite 等计算引擎。个人爱好是羽毛球和动漫。
Q:你和 Kylin 是怎么结缘的呢?
A:公司内部一个项目刚好也需要使用到预计算技术,所以就想在开源社区调研看看做类似事情的方案,Apache Kylin 在 OLAP、预计算方向上大名鼎鼎,很自然就想要了解 Kylin 是怎么做的来达成超大数据集上的亚秒级查询这样一个目的。然后就开始阅读 Kylin 的源码,在阅读源码的过程中,发现有一些可以改进的地方或者发现一些 bug,就向社区提交了 jira/pr。从基础的环境部署、使用上的一些问题到比较深入的框架、源码优化的讨论都在社区得到了很好的反馈。
Q:读懂源码可以让大家理解底层实现,有助于更好地使用 Kylin 和快速定位、解决问题;同时也是提升自身技术能力的很好途径。作为《可能是全网最深度的 Apache Kylin 查询剖析》的作者,可以和大家分享下你的源码阅读经验吗?
A:阅读源码前需要做一些准备。
1)心理准备
首先,需要做好一定的心理准备,阅读开源项目源码:
· 是一件需要持续投入的事情:如果你只是心血来潮想随便花点时间看看,以期望收获对某个开源项目的深度理解,那是不可能的。
· 短期并不会有明显的收益:也许你花了不少时间搞明白了某个功能是怎么实现的,可能一下子也没有可以施展的地方。
2)阅读官方文档
首先,对于一个你并不熟悉的项目,我并不建议一上来就读源码。我们需要一个从宏观到微观的过程,对于一个不熟悉的项目,首先要做的是阅读该项目的官方文档,通过官方文档我们可以了解到:
· 这个项目的背景
· 是用来解决什么样的问题的
· 包含哪几个部分、每个部分的作用是什么
· 都有哪些配置,这些配置是用来控制什么的
· 可以用来体验的 examples
· ...
在阅读官方文档后,在心里对这个项目其实就有了一个大概的轮廓,虽然细节还是不清楚,但是知道了个大概,也了解到了这个项目相关的很多名词。阅读官方文档的另一个好处是,它是最权威的,你可以完全信任它,但阅读其他人的翻译或者分析文章,由于作者英语、技术水平的参差不齐,文章质量相差也很大,甚至可能是错误的。
3)初步体验项目
接下来,建议动手去用一用这个项目,至少要跑一跑项目自带的 examples,对项目有一个体感。比如Kylin项目,你可以下载Docker Image快速体验下Kylin的亚秒级查询:https://kylin.apache.org/docs/install/kylin_docker.html。
如果你已经阅读了官方文档并有一定的实际使用经验,就可以开始阅读源码了。
1)带着问题找答案
比如我开始看 Kylin 的源码时,是带着 “Kylin 是怎么做到查询时输入的SQL是事实表、维表相关的,但最终查的是 Cube 的数据”这个问题去看的。看源码时,特别是一开始,如果不带着问题,容易迷失在海量的代码中,不知道从何看起,看着看着就不知道在看啥了。对于这个“问题”,可以是一个大的话题,如果是大的话题,你需要把大的话题随着看代码的过程,拆分为多个子问题去各个击破,子问题可以继续拆分为子问题,这样能让目标变得容易实现,当你解决一个子问题时,容易建立信心来解决接下来的问题。
2)Debug 式阅读
用 debug 的方式去跟读源码,相比于直接看源码是更加高效的方式。debug 能让你很清楚的看到执行某一个逻辑时:
· 各个类、方法之间的调用顺序是怎么样的
· 每个方法的输入输出是怎么样的
· 每个步骤调用前后状态、数据发生了什么样的变化
3)画流程图
我另一个习惯是画流程图,从《可能是全网最深度的Apache Kylin 查询剖析》可以看出。源码毕竟是比较庞杂、细碎的,但比如达成一个子功能的关键步骤其实并不会特别多,通过流程图可以让我们更好的提炼出有哪几个关键步骤,这几个关键步骤做了什么样的事情,让状态、数据发生了什么样的改变。说白了就是要抓住重点。这里我推荐一个很好用的工具:PlantUml(https://plantuml.com/zh/),它可以通过写简单 “代码”的方式画出各种常用的图,并且在 IDEA 中有插件支持。
4)费曼学习法
最后,我推荐一个四步学习法,即费曼技巧,我觉得非常适用于阅读源码:
· 第一步:选择一个你想要理解的概念,然后拿出一张白纸,把这个概念写在白纸的最上边。
· 第二步:假想你正要向别人传授这个概念,然后在白纸上写下你对这个概念的解释,就像你在教一位新接触这个概念的学生一样。这样做的时候,你会清楚的意识到关于这个概念你理解了多少,是否还存在理解不清的地方。
· 第三步:无论何时你感觉卡壳了,都要回到原始的学习资料,并重新学习让你感到卡壳的那部分,直到你领会得足够顺畅,顺畅到可以在纸上解释这个部分为止
· 第四步:用你自己的语言,而不是学习资料中的语言来解释概念。如果你的解释很冗长或者令人迷惑,那就说明你对概念的理解可能并没有你自己想象得那么顺畅。你要努力简化语言表达,或者与已有的知识建立一种类比关系(比喻),以便更好地理解它。
Q:为什么做 Kylin Docker Image 呢?
A:我第一次想去把 Kylin 跑起来进行试用的时候,发现 Kylin 的依赖非常多,包括:Hadoop, Hive, HBase, Spark, Zookeeper, Kafka, Livy(可选),并且没有一个 local 模式可以启动。对比过往熟悉的引擎,比如 Spark,有自己的 Standalone 模式可以自行运行起来,不用有其他的依赖。对于想试用或者在本地试用 Kylin 的用户来说,要部署这么一套系统成本非常大,所以我希望能够有一个能 “一键”启动 Kylin 的功能,不需要做这么繁重的依赖部署,经过和社区同学的讨论,最终以 Docker 的方式来承载这样一个功能:用户只需要执行。
docker run -d \ -m 8G \ -p 7070:7070 \ -p 8088:8088 \ -p 50070:50070 \ -p 8032:8032 \ -p 8042:8042 \ -p 16010:16010 \ apache-kylin-standalone
一条命令就能把 Kylin 跑起来,并自动 build example Cube 进行试用。
(Kylin Docker Image 见:https://hub.docker.com/r/apachekylin/apache-kylin-standalone)
Q:听说你还做了 Kylin 支持 Spark SQL 作为数据源的功能?
A:对。我之前发现 Kylin 只支持 Hive 和 JDBC 数据源,但还有很多数据源/数据格式也得到了非常广泛的应用,如:Alluxio、Cassandra、Kudu、Orc 等等。如果 Kylin 也能试用这些数据源进行 Cube 构建,那么其应用范围将会更加广泛。Spark SQL DataSource 本身就支持众多的数据源,并且开发了自定义 DataSource 的能力,具有很强的扩展性。恰好能解决 Kylin 数据源很有限的问题,所以就开发了 Kylin 支持 Spark Sql 数据源的能力来借助 Spark Sql 的能力读取更多的数据源(该 PR 还在 Review 中)。
运营小姐姐:听说你们平时比较忙?
卫斌童鞋:是的。不过头可破,血可流,发型不能乱。
运营小姐姐:每天坚持洗头是作为程序员最后的倔强吗?
卫斌童鞋:可能我比较勤快吧。。。😳
运营小姐姐:又要忙工作又要参与社区,有什么解压小诀窍呢?
卫斌童鞋:忙的时候,撸撸猫就能很放松。大概两年前,我在路边捡到一只刚出生没多久的流浪猫(下图白猫),后来机缘巧合又收养了一只(下图灰猫),平时回家一般会吸吸猫,是很好的解压方式。
坐拥两只「小可爱」,这就是传说中的「大户人家」吗?有组团偷猫的小伙伴吗🙋?评论区留言走起~
PS:
悄悄附上卫斌同学的博客地址:https://www.jianshu.com/u/001d44710e2e
干货满满,不容错过~
近年来,随着商业环境的竞争日益激烈,企业对于实时数据服务的需求急剧增加。Kyligence 在服务众多客户的过
数据要素在银行各业务领域和流程中发挥着至关重要的作用,面对激烈的市场竞争和客户需求,银行越来越注重从数据管理中
作为一名消费者,炎热的夏天我们会走进一家便利店,从冰柜中选出一瓶汽水;下午工作有点累了,我们会在公司的自动贩卖
2024 年伊始,Kyligence 联合创始人兼 CEO 韩卿(Luke)分享了对 AI 与数据行业的一些战
房地产行业是我国国民经济中的重要支柱产业之一,在房地产市场供求关系发生重大变化的当下,房企面临多重挑战。Kyl
今年年初,Kyligence 高级副总裁兼合伙人葛双寅(Silas Ge)受邀在阿斯利康“跃行致远三十周年年会
2024 年伊始,Kyligence 联合创始人兼 CEO 韩卿在公司内部的飞书订阅号发表了多篇 Rethin
400 8658 757
工作日:10:00 - 18:00
已有账号? 点此登陆
预约演示,您将获得
完整的产品体验
从数据导入、建模到分析的全流程操作演示。
行业专家解惑
与资深行业专家的交流机会,解答您的个性化问题。
请填写真实信息,我们会在 1-2 个工作日内电话与您联系。
全行业落地场景演示
涵盖金融、零售、餐饮、医药、制造等多个行业,最贴合您的业务需求与场景。
Data + AI 应用落地咨询
与资深技术专家深入交流,助您的企业快速落地 AI 场景应用。
立即预约,您将获得
精准数据计算能力:
接入高精度数值计算大模型服务,为您的企业级AI应用提供强大支持。
个性化业务场景解决方案:
量身定制的计算模型和数据分析服务,切实贴合您的业务需求和应用场景。
Data + AI 落地应用咨询:
与资深专家深入探讨数据和 AI 如何帮助您的企业加速实现应用落地,构建更智能的数据驱动未来。
申请体验,您将获得
体验数据处理性能 2x 加速
同等规模资源、同等量级数据、同一套数据处理逻辑,处理耗时下降一半
专家支持
试用部署、生成数据、性能对比各操作环节在线支持