DataWorks的Notebook支持多种类型的单元格,提供了一个交互式且模块化的分析环境,旨在帮助用户高效地完成数据处理、分析、可视化以及模型构建。
功能介绍
在DataWorks中,可以通过Notebook节点构建交互式、模块化的可复用分析环境。
多引擎开发:DataWorks Notebook拥有SQL Cell功能,支持多种大数据引擎的SQL开发与分析。
交互式分析:
交互式SQL查询:通过Python编写Widgets组件,通过在组件中直观选择或设置参数的取值,后续可以进一步在SQL中引用相同参数及取值,从而实现Python和SQL间的交互式查询功能。
SQL查询结果写入DataFrame:SQL查询结果可直接存储在Pandas DataFrame 或 MaxFrame DataFrame对象中,以变量的形式传递至后续单元格。
可视化图表生成:基于DataFrame中的数据内容,您可以在Python Cell中读取DataFrame变量并绘制图表,实现Python与SQL的高效联动。
大数据+AI一体化开发:在DataWorks Notebook中可以使用Pandas等库进行数据清洗与准备,使数据内容满足算法模型的输入要求。随后,基于清洗后的数据,轻松完成算法模型的开发、训练与评估,实现大数据与AI的无缝衔接。
智能代码生成:DataWorks Notebook内置智能编程助手,支持通过DataWorks Copilot辅助生成SQL代码和Python代码,提升开发效率。
使用限制
已创建工作空间,并参加数据开发(Data Studio)(新版)公测。用户可通过创建工作空间创建新版数据开发工作空间。
已拥有Serverless资源组。详情请参见使用Serverless资源组。
已创建个人开发环境实例。在Data Studio中运行Notebook依赖个人开发环境实例,详情请参见创建个人开发环境实例。
支持的单元格类型
SQL单元格:
支持的单元格类型:
MaxCompute SQL
、Hologres SQL
、EMR SPARK SQL
、StarRocks SQL
、Flink SQL Batch
、Flink SQL Streaming
支持的计算资源:
MaxCompute
、Hologres
、EMR Serverless Spark
、EMR Serverless StarRocks
、全托管Flink
Python单元格。
Markdown单元格。
创建个人开发环境实例
Notebook运行依赖个人开发环境实例,使用前需先创建并切换至目标实例,详情请参见创建个人开发环境实例。
创建Notebook节点
进入数据开发(新版)页面。
进入DataWorks工作空间列表页,在顶部切换至目标地域,找到已创建的工作空间,单击操作列的 ,进入Data Studio。
创建Notebook。
DataWorks支持在项目目录、个人目录以及手动目录下创建Notebook。
在左侧导航栏单击
按钮,进入数据开发页面,在项目目录或人目录下创建Notebook。
项目目录下创建Notebook:
单击
按钮,选中Notebook,来新建Notebook。
若已创建的工作目录,鼠标悬浮在目录名上右键选择
新建Notebook。若已创建的工作流,编辑工作流时,可添加Notebook节点。
个人目录下创建Notebook:
单击
按钮,新建Notebook文件。
单击
按钮,新增
.ipynb
格式的文件,实现新建Notebook。若已创建的文件夹,鼠标悬浮在文件夹名上右键选择新建Notebook来新建Notebook。
在左侧导航栏单击
按钮,进入手动页面,在手动目录下单击
按钮,选择 ,新建Notebook。
开发Notebook节点
1. 添加单元格
在Notebook节点工具栏中,可以根据需要,选择SQL
、Python
、Markdown
新增按钮,快速创建对应的单元格。此外,您也可以在代码编辑区具体单元格上下方快速新增单元格。
从当前单元格上方新增单元格:鼠标悬浮至单元格上边缘时展示新增按钮,单击新增按钮即可在当前单元格上方插入一个新单元格。
从当前单元格下方新增单元格:鼠标悬浮至单元格下边缘时展示新增按钮,单击新增按钮即可在当前单元格下方插入一个新单元格。
若您想重新调整单元格位置,可通过鼠标悬浮在单元格前蓝色线条上拖拽调整单元格顺序。
2. (可选)切换单元格类型
在单元格中,您可通过单元格右下角的单元格类型按钮,相互切换单元格类型。更多单元格类型可参见:支持的单元格类型。
将SQL单元格从MaxCompute SQL单元格变更为Hologres SQL或其他SQL单元格。
将SQL单元格变更为Python单元格或Markdown单元格,或者将Python单元格或Markdown单元格切换为SQL单元格。
在切换单元格类型时,编辑内容将保留,需手动将单元格内的代码调整为合适的类型。
3. 开发单元格代码
在相应的单元格内可编辑SQL、Python以及Markdown代码,使用SQL单元格开发时,需确保SQL语法与选择的SQL单元格类型,即计算资源类型匹配。您可使用智能助手(DataWorks Copilot)辅助编程,以下为进入智能助手的方式:
单元格工具栏进入:单击单元格右上方的
按钮,唤起Copilot的编辑器内聊天框,进行辅助编程。
单元格右键菜单进入:选中单元格右键选择
,进行辅助编程。快捷键进入。
Mac系统:
Command+I
键快捷呼出智能助手聊天框。Windows系统:
Ctrl+I
键快捷呼出智能助手聊天框。
运行Notebook
1. 选择个人开发环境
在DataStudio中直接运行Notebook时,Notebook中的Python单元格需要基于个人开发环境来运行,因此需在页面上方手动选择已创建个人开发环境实例作为Notebook运行的环境。
2. 确认/切换Python内核
确认/切换Python内核:单击Notebook节点右上角的按钮,确认当前Python单元格运行的Python内核版本,切换其他Python内核版本。
3. (可选)选择计算资源
SQL单元格:点击SQL单元格右下角
按钮,必须指定已绑定计算资源,运行单元格时会将SQL使用指定计算资源运行。
Python单元格:Python单元格默认采用个人开发环境实例内核运行Python单元格中的代码,若需要访问指定计算资源服务,您也可以通过使用内置Magic Command建立MaxCompute计算资源连接。
4. 运行Notebook单元格
完成Notebook的单元格开发后,对所有单元格进行测试运行,也可以仅对单个单元格进行测试运行。
运行全部单元格:编辑完成Notebook后,单击上方
按钮,测试运行该Notebook节点下的所有单元格。
运行单个单元格:编辑完成Notebook内部的单元格后,单击单元格左侧
按钮,测试运行。
5. 查看运行结果
SQL单元格
单元格内支持撰写多种类型的SQL脚本,在运行SQL脚本后,将在单元格下方打印SQL运行结果。
场景一:若SQL不包含SELECT语句,单元格运行之后默认只展示运行日志。
CREATE TABLE IF NOT EXISTS product ( product_id BIGINT, product_name STRING, product_type STRING, price DECIMAL(10, 2) ) LIFECYCLE 30; -- 表示数据的生命周期为30天,超出后数据将被自动删除,这是一个可选设置
场景二:若SQL包含SELECT语句,单元格运行之后将展示运行日志,并提供两种查看方式:表格和可视化图表。同时,系统会自动将查询结果生成一个DataFrame变量。
SELECT product_id, product_name, product_type, price FROM product;
生成DataFrame数据对象:
SQL单元格自动生成返回变量,可通过单击SQL单元格左下方的
df_*
变量名,为生成的DataFrame变量重新命名。查看SQL查询的表格:
SQL查询运行完成后,在日志区域默认展示SQL查询表格。
查看SQL查询的可视化图表
SQL查询运行完成后,在日志区域左侧单击
按钮,可以查看通过SQL查询生成的表数据的可视化图表。
Python单元格
单元格内支持撰写Python脚本,在运行Python脚本后,将在单元格下方打印Python代码的运行结果。
场景一:仅打印输出文本。
print("Hello World")
场景二:使用Pandas DataFrame。
import pandas as pd # 定义产品数据,包括详细信息:产品名称、区域和登录频率。 product_data = { 'Product_Name': ['DataWorks', 'RDS MySQL', 'EMR Spark', 'MaxCompute'], 'Product_Region': ['East China 2 (Shanghai)', 'North China 2 (Beijing)', 'South China 1 (Shenzhen)', 'Hong Kong'], 'Login_Frequency': [33, 22, 11, 44] } # 根据给定的数据创建一个DataFrame。 df_products = pd.DataFrame(product_data) # 打印DataFrame以显示产品信息。 print(df_products)
场景三:绘制图表。
import matplotlib.pyplot as plt # 数据 categories = ['DataWorks', 'RDS MySQL', 'MaxCompute', 'EMR Spark', 'Hologres'] values = [23, 45, 56, 78, 30] # 创建条形图 plt.figure(figsize=(10, 6)) plt.bar(categories, values, color=['blue', 'green', 'red', 'purple', 'orange']) # 添加标题和标签 plt.title('Example Bar Chart') plt.xlabel('category') plt.ylabel('value') # 显示图形 plt.show()
Markdown单元格
在编写完成后,单击
按钮后,可展示Markdown的文本和格式效果。
# DataWorks Notebook
在已展示的格式效果的Markdown单元格中,单击按钮,可继续编辑该单元格。
后续操作:发布节点
配置调度:项目目录下的Notebook若要在生产环境中周期性调度运行,需要配置调度相关属性。例如:指定周期调度时间。
项目目录、个人目录或手动目录下的Notebook均默认使用个人开发环境的内核运行,当发布Notebook至生产环境时,系统将默认使用您在调度配置中选择的镜像环境执行。因此,发布Notebook前,请确保调度配置中选择的镜像,已包含运行Notebook节点需要的依赖环境。您可基于个人开发环境制作镜像,以便在调度时使用。
发布节点:Notebook节点发布至生产环境后才会按照调度配置中的配置项运行,您可通过以下方式将节点发布至生产环境。
项目目录下发布Notebook:保存Notebook后,单击
发布Notebook,发布后可在运维中心内的 页面查看该Notebook任务。
个人目录下发布Notebook:保存Notebook后,先单击
按钮将个人目录下的Notebook提交至项目目录下,再单击
发布Notebook,发布后可在运维中心内的 页面查看该Notebook任务。
手动目录下发布Notebook:保存Notebook后,单击
发布Notebook,发布后可在运维中心内的 页面查看该Notebook任务。
下线任务:下线Notebook时,右键单击节点或工作流,选择删除,根据界面提示对Notebook进行下线或删除。
场景与实践
使用内置Magic Command建立MaxCompute计算资源连接
在Python单元格中,可使用内置的Magic Command建立与MaxCompute计算资源的连接,从而无需在Python中频繁重复定义连接信息和明文AccessKey信息
在建立MaxCompute计算资源连接前,请确保已绑定MaxCompute(ODPS)计算资源。
场景一:建立MaxCompute MaxFrame Session连接
使用Python单元格进行开发时,您可以使用以下内置的Magic Command唤起MaxCompute计算资源选择器,访问MaxCompute MaxFrame服务。
使用Magic Command连接并访问MaxCompute MaxFrame Session 。
mf_session = %maxframe
使用Python单元格的Magic Command释放MaxCompute MaxFrame连接:
mf_session.destroy()
场景二:连接MaxCompute计算资源
使用Python单元格进行开发时,您可以使用以下内置的Magic Command唤起MaxCompute计算资源选择器,通过 Python 语言与 MaxCompute 进行交互,包括数据加载、查询、DDL 操作。
使用Magic Command创建MaxCompute连接。
在单元格中输入以下命令会唤起MaxCompute计算资源选择器。
o=%odps
使用获取到的MaxCompute计算资源运行PyODPS脚本。
例如,获取当前项目下的所有表:
with o.execute_sql('show tables').open_reader() as reader: print(reader.raw)
将SQL单元格结果传递至Python单元格
当SQL单元格有输出结果时,将自动生成DataFrame变量,这些变量可被Python单元格获取,从而实现SQL单元格和Python单元格联动。
运行SQL单元格,生成DataFrame。
若SQL单元格中包含一段查询SQL,则自动获取的这段SQL的结果作为DataFrame变量。
若SQL单元格中包含多段查询SQL,则获取的DataFrame变量是多段查询SQL的最后一个查询结果。
DataFrame变量名默认为
df_**
,您可以通过单击单元格左下角的变量名对变量进行自定义。如果一个单元格中包含多个查询SQL,那么DataFrame变量存储的数据内容将仅包含最后一个运行的SQL查询结果。
在Python单元格中获取DataFrame变量。
在Python 单元格中可通过直接填写变量名获取DataFrame变量。
Notebook引用Python资源
Notebook在进行开发时,可通过##@resource_reference{"自定义名.py"}
的方式引用MaxCompute资源,以下为引用Python资源的简单示例:
Notebook引用Python资源仅在生产环境下生效,在开发环境下无法正常获取资源,请将Notebook发布至生产环境后,在运维中心执行。
新建Python的资源
添加Python资源文件。
进入DataWorks工作空间列表页,在顶部切换至目标地域,找到已创建的工作空间,单击操作列的 ,进入Data Studio。
在左侧导航栏单击
,进入资源管理。
在资源管理页面,单击新建按钮或
,您也可以先新建目录,规划资源管理目录后,再在相应目录上右键,选择新建,选择具体创建的资源或函数类型。
新建MaxCompute Python资源。
本示例将该Python资源命名为:
hello.py
。
编辑Python资源文件内容,示例代码如下:
# your_script.py def greet(name): print(f"Hello, {name}!")
编辑完成后,单击保存,保存Python代码。
完成代码的编辑与保存后,单击
按钮,保存
hello.py
资源。资源保存成功后,单击
按钮,发布
hello.py
资源至开发以及生产环境。
引用Python资源
新增Notebook节点,详情可参见创建Notebook节点。
在Notebook中新增Python单元格,详情可参见1. 添加单元格。
在Python单元格中编写的
##@resource_reference{"hello.py"}
引用新建的MaxCompute Python资源,以下为示例代码:# 通过该注释在调度时引用一个名称为hello.py的Python资源 ##@resource_reference{"hello.py"} import sys import os # 将当前工作目录添加到路径中 sys.path.append(os.path.abspath('./hello.py')) # 或者使用相对路径,根据实际情况进行调整 from hello import greet # 替换为实际的函数名 greet('DataWorks')
完成Python单元格的代码编写与节点调度配置后,保存并发布Notebook节点。
进入运维中心(工作流),在执行补数据并查看补数据实例(新版)。
中找到已发布的Notebook节点,单击操作列补数据,对Notebook节点进行补数据,补数据详情可参见:完成补数据后,即可通过查看Notebook节点运行日志来确认Python单元格是否执行成功。
附录:通用操作
DataWorks的Notebook操作基于VSCode的Jupyter Notebook,以下是单元格中的一些通用操作:
- 本页导读 (1)
- 功能介绍
- 使用限制
- 支持的单元格类型
- 创建个人开发环境实例
- 创建Notebook节点
- 开发Notebook节点
- 1. 添加单元格
- 2. (可选)切换单元格类型
- 3. 开发单元格代码
- 运行Notebook
- 1. 选择个人开发环境
- 2. 确认/切换Python内核
- 3. (可选)选择计算资源
- 4. 运行Notebook单元格
- 5. 查看运行结果
- 后续操作:发布节点
- 场景与实践
- 使用内置Magic Command建立MaxCompute计算资源连接
- 将SQL单元格结果传递至Python单元格
- Notebook引用Python资源
- 附录:通用操作
- 单元格工具栏操作
- 节点通用操作