PAI可视化建模1.0(Studio)即将下线。如果您已在DataWorks中部署了Studio的周期性调度任务,需要将其迁移至PAI Designer。迁移采用并行运行策略:先修改Designer输出表名避免冲突,新旧任务同时运行验证稳定后,再下线Studio。
本文仅适用于已在DataWorks中部署为周期性调度任务的Studio实验。尚未部署到DataWorks的实验,仅需完成实验迁移即可。具体操作,请参见迁移Studio实验至Designer。
本文以DataWorks标准模式为例。如您使用简单模式,提交节点后即自动发布,无需单独进入发布中心。
前提条件
已开通PAI Designer服务,且PAI工作空间与DataWorks工作空间处于同一地域。
DataWorks工作空间已关联PAI工作空间。具体操作,请参见使用DataWorks离线调度Designer工作流。
当前Studio实验可正常运行,且DataWorks中对应的周期调度节点状态正常。
实验中使用的算法组件在Designer中有对应支持。不支持的组件类型请参见迁移Studio实验至Designer中的兼容性说明。
已梳理当前Studio调度节点在DataWorks中的上下游依赖关系。
迁移流程总览
迁移分为四个阶段:
迁移实验并修改输出表名:将Studio实验迁移至Designer,并修改输出表名以避免冲突。
部署Designer节点到DataWorks:在DataWorks中创建PAI Designer调度节点并配置调度属性。
修改下游节点依赖并并行运行:将下游节点切换到新表,新旧任务并行运行验证。
下线Studio节点:确认稳定后冻结并删除Studio节点。

第一阶段:迁移实验并修改输出表名
步骤一:迁移实验
参考官方文档完成实验迁移。具体操作,请参见迁移Studio实验至Designer。
步骤二:修改Designer工作流中的输出表名
迁移完成后,将Designer工作流中写数据表节点的输出表名改为新名称(建议添加_v2后缀)。
此步骤为迁移的关键步骤。如果不修改输出表名,部署到DataWorks时会因输出节点名冲突报错,且两个任务写同一张表会造成数据冲突。
操作方法:
在PAI Designer中打开迁移后的工作流。
找到写数据表节点,将输出表名修改为新名称。例如:
output_table→output_table_v2。如果输出表是分区表,先在MaxCompute中创建同结构的新分区表,分区参数保持不变。
运行一次Designer工作流,确认新表中有正确的输出数据。运行成功后即可进入第二阶段。
修改示例:
以下为 Studio 工作流中的写数据表配置(输出表为 output_table):

修改后 Designer 中的分区表配置(表名改为 output_table_v2):
第二阶段:部署Designer节点到DataWorks
步骤一:创建PAI Designer调度节点
您可以通过以下两种方式创建调度节点。详细操作请参见使用DataWorks离线调度Designer工作流和PAI Designer节点。
方式一:通过Designer控制台发起
在PAI Designer中打开已成功运行的工作流。
单击画布上方的周期性调度,系统自动跳转至DataWorks并创建节点。
方式二:在DataWorks中手动创建
进入DataWorks数据开发页面,单击。
在节点编辑页面选择关联的Designer工作流。
步骤二:配置调度属性
参照原Studio节点的调度配置,设置调度周期、定时时间、重跑属性等,与原配置保持一致。
如原实验使用了调度参数(如
${bizdate}),在Designer节点中同样配置。保存并提交节点。标准模式需进入发布中心发布至生产环境。
首次创建节点时会自动获取最新的实验内容。但如果创建节点后又修改了Designer工作流(如调整输出表名),需在节点编辑页面单击重新加载同步最新内容,否则运行时仍使用旧的实验内容。
参考文档: 配置并使用调度参数 | 调度依赖配置指引。
第三阶段:修改下游节点依赖并并行运行
步骤一:切换下游节点到新表
原Studio节点的下游任务依赖老表(如output_table),需切换到Designer产出的新表(如output_table_v2)。
对每个下游节点执行以下操作:
打开下游节点编辑页面,进入。
修改上游依赖:
SQL节点:将代码中的表名改为新表名,然后单击从代码解析输入输出,系统自动关联到Designer节点的输出。
非SQL节点:手动删除Studio节点输出名称,添加Designer节点输出名称(如
工作空间名.output_table_v2)。
保存、提交并发布。
步骤二:并行运行验证
切换完成后,两个任务并行运行:
Studio任务:继续写入原表,但已无下游依赖。
Designer任务:写入新表,下游节点已切换至此。
建议并行观察3~7天,在运维中心确认Designer节点正常触发、运行无报错、下游业务结果正确。并行运行期间Studio仍在产出数据,如发现问题可随时回滚。
第四阶段:下线Studio节点
确认Designer任务稳定后:
在运维中心冻结Studio节点,暂停调度。冻结而非直接删除,是为了保留回滚能力。
观察1~2个调度周期,确认链路正常。
确认无影响后删除Studio节点并发布。
删除时若提示存在下游依赖,说明仍有节点引用了Studio的输出名称,需逐一排查修改。
回滚策略
如迁移后发现问题,按以下步骤回滚:
将下游节点的依赖和表名改回原值,提交发布。
解冻Studio节点,恢复调度。
冻结Designer节点。
排查问题修复后重新切换。
Studio节点冻结后建议保留至少2周,确认完全稳定后再最终删除。
常见问题
输出节点名冲突
现象:部署Designer节点时报错"不能多个节点使用同一个输出名"。
原因:DataWorks节点未同步到最新的实验内容,自动解析的输出名仍基于旧表名。
解决方法:在Designer节点编辑页面单击重新加载获取最新实验内容,重新提交即可。
分区表迁移失败
现象:Designer工作流运行失败,提示目标表不存在。
解决方法:在MaxCompute中预先创建新分区表(如output_table_v2),表结构和分区字段与原表一致。
无法删除Studio节点
现象:删除时提示存在下游依赖。
解决方法:在运维中心查看该节点下游依赖列表,逐一将下游节点的依赖切换到Designer输出,提交发布后再删除。
调度参数未生效
现象:Designer节点运行时参数未正确替换。
解决方法:确认Designer工作流中组件已配置参数占位符${变量名},且DataWorks节点调度配置中的参数赋值与原Studio节点一致。可用补数据功能验证参数是否生效。
不支持迁移的组件
现象:部分Studio组件(流式组件、部分自定义算法)在Designer中无对应支持。
解决方法:参见Designer概述中的组件列表寻找替代方案,或联系阿里云技术支持。
迁移检查清单
阶段 | 检查项 | 状态 |
第一阶段 | 实验已迁移,Designer输出表名已修改,手动运行成功 | |
第二阶段 | Designer调度节点已创建、配置并发布 | |
第三阶段 | 下游节点依赖和表名已切换至新表,并行验证通过(3~7天) | |
第四阶段 | Studio节点已冻结,观察期后删除 |