第三代Notebook:Byzer-Notebook 如何助力数据工程、分析,以及机器学习?
**导读:**今天主要讲解 Byzer-Notebook Web IDE,被称之为第三代 Notebook,是因为它和其他的 Notebook 有不太一样的地方。
今天的介绍会围绕下面三部分展开:
-
Byzer Notebook 基本介绍
-
Byzer Notebook实操演示
-
回顾与总结
分享嘉宾|祝海林 Kyligence 资深数据架构
编辑整理|王丽燕 中国农业大学
出品社区|DataFun
01/Byzer Notebook 基本介绍
1. Byzer Notebook 形态
Byzer-Notebook 目前有两种形态:一种是桌面版,是基于 VScode 开发的插件,通过这个插件可以在 VScode 创建 Notebook 进行一些操作;第二种是 Web 版,如果要把 Byzer 的解释器部署在 Kubernetes 或 Yarn 上,就需要 Web 版的 IDE。本文将主要介绍 Web 版的 IDE。除此之外,我们也提供了 Byzer-shell / Byzer-CLI,给喜欢使用命令行的同学。
2. 和 Jupyter Notebook 的差异点
说到 Notebook,就不得不提 Jupyter 和 Zeppelin。Jupyter 是当前比较主流的 Notebook 的形式,AI 工程师用的比较多。Zeppelin 是接大数据的相关功能比较多。和传统的 Notebook 相比,Byzer Notebook 不仅仅是 Notebook,主要有以下不同:
① 面向 Data + AI。
② 自带专属语言 Byzer-lang。
**③ SQL First:**传统的 Notebook 是 Python first,但是 Byzer Notebook 是 SQL 优先,Python 第二。SQL 与 SQL 之间衔接也比较方便,不需要嵌套。
**④ Catalog 支持:**集成数仓,数据湖,业务数据库,文件系统。
**⑤ 调度支持:**支持定时调度和依赖调度,测试完的 Notebook 可以直接设置调度,方便部署到各生产环境;这样的 Notebook 更生产化,有别于传统仅仅探索实验性的功能。
**⑥ 长任务管理:**在数据处理和模型训练过程中花费几个小时是很正常的现象,因此需要有任务管理界面能查看任务状态, 而不是传统 Notebook 那种纯交互式的。
**⑦ Cell 级别代码复用:**可在不同 Notebook 之间代码复用。
**⑧ 可视化 Workflow:**主要用于可视化生成 Notebook。
整体而言,Byzer Notebook 入门门槛更低,只需要会 SQL 就可以使用 Notebook 完成日常的探索和 AI 相关工作。Byzer Notebook 不止于探索实验特性,还添加了更多的生产环境特性、可视化 Workflow 等特色功能。
--
02/Byzer Notebook 实操演示
下面将从以下 5 个方面进行实操演示:
(1)连接和加载业务数据库
通过 connect 语法进行数据库连接,设置驱动和 url 链接、用户名、密码,最后把这个连接用 as .. 命名。
通过上述连接数据源加载对应表的数据:
(2)从对象存储加载 csv 文件
inferSchema 设置为 True,系统会自动推断变量 schema,header=True 设置第一行为表头。
(3)把两个数据源进行异构 join 关联
如下图所示:用 join 把两表关联起来。
另外,Byzer 还会生成一些函数的模板,比如下图的 case when 函数模板,系统生成后根据实际应用修改相应的 condition 和 value 即可,方便实用。
(4)进行基本的过滤聚合操作
(5)进行可视化
先把 cell 的格式修改为 Visualize:
input 输入待描绘图表的表名,点击 Applied 按钮后,添加图表的描述就能生成图了:
生成一个动态图:
当我们训练模型时,准备数据的过程是非常耗时的,需要加载不同数据源的数据,再进行数据的探索和挖掘。使用 Byzer 就可以很方便的去掌控数据,并且门槛很低,只要懂 SQL 即可。
--
03/回顾与总结
1. Byzer Notebook 特点
**① 表格化:**每个 cell 会有一个或多个 SQL 语句,最终都会产出一张表,后面的 cell 可以基于前面 cell 产生的结果去做处理,比如关联等操作。
**② SQL 化:**使用 SQL 进行数据处理。
**③ 可视化:**使用 Yaml 文本绘图。
**④ SQL First:**SQL 是第一公民。
(1)Catalog 集成
Byzer可以集成多种数据源:包含数仓 Hive,内部集成的数据湖,文件系统,在 External Data Source 里面建立 jdbc 连接去连接业务数据库。
下面展示一下 Byzer 的界面。
Import & Connect Data 可以上传数据上来,会存储到文件系统的 tmp/upload 目录底下;Create a New Notebook 用来创建和提供新的 Notebook。
点击 Quick Start 的 Explore 可进入 Notebook 页面,点击数据库图标可看到 catalog,如下图所示,Byzer 底层的引擎是**多租户引擎,**不同租户互不干扰,不同租户看到 tmp 文件是不一样的,都是各自的数据,但是 Hive 和 Deltalake 数据是共享的。
(2)长任务管理
长任务管理可以看到历史任务和正在执行的任务,可以对当前任务进行关停操作,和状态监控。这一模块在页面的 Jobs 栏目下。
(3)可视化 Workflow
有些人更喜欢图形化的方式去完成工作,可新建一个后缀为 bzwf 的 Workflow 文件。
如下图,左侧页面会有很多模块,拖拽到右面画布中,各模块连接,点击中间画布中的每一个模块,右侧可设置具体参数,比如数据加载模块 load,右侧可以设置数据源,数据类型,目录,输出名等,方便快捷,不用写代码。系统会根据你的设置生成对应的 Byzer 语言。左侧模块中有一个 select 模块支持写 SQL 语句对数据进行操作处理。左侧还有很多特征工程模块、算法模块等可以用来特征加工、模型训练等。
点击右侧 Notebook/Workflow 栏中的 Notebook,会看到 Workflow 转化成的 Notebook 代码,点击 save as Notebook 可以保存这个 Notebook 文件。
(4)调度集成
在此流程和代码调通的情况下,需要调度可以点击右上角 add to schedule 设置调度信息,可以把它创建为一个新的调度,也可以添加到已有调度上。
设置为调度信息就可以在调度(Schedules)栏目下看到调度的状态,还能看每个调度的 DAG 图,能清晰看到调度的流程和依赖。
(5)代码复用
通过 include 可以把其他 Notebook 中的 cell 引用过来,不用重复写。上图中例子引用 case_when.bznb 中的第 3 个 cell,showAll 被引用到新的文件可当作函数运行得到结果。
(6)Python 支持
Byzer 还支持 Python,通过 load..as 加载数据,通过 to_dataset().to_dask() 将 SQL 中得到的表转化为分布式 Pandas,再用 Pandas 进行数据处理,最后 save..as 保存结果。
运行 Python 代码需要填写一些注释信息,包括 env,input 等信息。Byzer Notebook 通过可视化表单的形式填写。
2. Byzer Notebook 价值
最后,Byzer Notebook 的价值可以总结为以下四点:
① 探索和实验:保留了 Notebook 已有的特点,可以一步步去调代码,SQL 和 SQL 之间有关联关系,传统 Notebook 调 SQL 时可能有复杂的嵌套语句,但在 Byzer 中,可以一个个 cell 逐步保存结果逐步运行,很方便探索和实验。
**② 生产化:**新增了调度和长任务支持,实现了真正的生产化。Debug 之后立即可以设置成调度任务,投入到生产环境中。
**③ 分布式:**SQL 和 Python 都支持分布式运行。当然如果规模不大的情况,也可以使用桌面版。
**④ 语言融合:**实现了 SQL 和 Python 的无缝融合。比如在 Python 中通过一个注解就可以很方便地获得一个数据集。
3. Byzer Notebook 开源社区
① Byzer 开源社区面向 Data&AI 打造技术生态,对于一线工作人员方面的社区愿景是释放分析师/工程师/运维的生产力;对企业来说,是希望帮助企业打造低成本、高效率的落地数据平台,完成 AI 工程化。
以上就是本次分享的内容,谢谢大家。