在工作区中运行和计划笔记本

在工作区中计划笔记本

您可以通过在工作区中定期安排笔记本运行,自动化数据科学和 ML 工作流程。计划运行使用 Snowflake Tasks,并按一致的自上而下顺序执行包含所有依赖项的笔记本。

备注

共享工作区中的笔记本目前不支持计划运行。

所需权限

要计划笔记本,创建计划所使用的角色必须具有以下权限和授权:

账户级别

  • ACCOUNT 的 EXECUTE TASK 权限:允许该角色运行与计划笔记本相关的任务。

架构级别

  • CREATE TASK:用于创建基础 Snowflake 任务。

  • 对目标架构具有 USAGE 权限:用于存储任务元数据和笔记本项目对象。

计算与仓库权限

  • 对用于笔记本执行的计算池的 USAGE 权限。

  • 用于笔记本内 SQL 单元格的查询仓库的 USAGE 和 MONITOR 权限。

笔记本的外部访问集成 (EAIs) 的 USAGE 权限

  • 笔记本使用的任何 EAI 的 USAGE 权限。

计划笔记本

要在 Snowsight 中计划笔记本,请按照以下步骤操作:

  1. 在导航菜单中,选择 Projects » Notebooks

  2. 创建新笔记本或打开要计划的现有笔记本。

  3. Select Schedule in the top-right of the notebook editor.

    • If this is the notebook's first task, the Schedule button is a calendar icon.

    • 如果计划已存在,该图标则变为带时钟的日历。

  4. 选择 Create Schedule

  5. Schedule a Notebook Task 对话框中,填写以下信息。

    基本设置

    • 任务名称:计划任务的唯一名称。默认名称为 {notebook-name}_task_#,如有需要可进行修改。

    • 所有者角色:执行任务所使用的 Snowflake 角色。请选择具有执行计划笔记本所有操作所需权限的角色。该角色必须具备以下权限:

      • 读取/写入笔记本使用的数据库对象。

      • 访问仓库、计算池和集成。

      • 创建/更新任务和项目对象。

    • 位置:任务对象及其关联笔记本项目对象将创建所在的数据库和架构。请选择您的角色在其中具有 CREATE TASK、USAGE 及相关权限的架构。

    • **频率:**笔记本的运行频率。可选择以下频率:每小时、每天、每周、每月或自定义(Cron 计划)。所有执行时间均以您的本地时区为准。

    高级设置

    • 项目名称:Snowflake 为任务执行创建的笔记本项目容器的唯一名称。若未修改,Snowflake 会使用默认名称。

    • 参数(可选):在运行时传递给笔记本的键值参数,会以命令行实参形式(在 sys.argv 中)出现。参数可用于传递日期、环境标志、阈值或模型版本等信息。

    运行时变体

    • CPU:使用 CPU 容器运行时环境,并在 CPU 计算池(例如,自动配置的 SYSTEM_COMPUTE_POOL_CPU)上运行。

    • GPU:使用包含 GPU 加速库的 GPU 容器运行时环境,并在 GPU 计算池(例如 SYSTEM_COMPUTE_POOL_GPU)上运行。

    • Python 版本:任务执行时使用的 Python 版本。

    • 运行时版本:基础容器运行时镜像。选择正确的运行时版本,可确保您的笔记本在开发环境与计划执行任务之间保持运行一致性。

    • 计算池:执行该笔记本任务的计算池。确保计算池在计划执行时具有足够容量(空闲节点)。为避免计划运行失败,建议您使用专用计算池,确保没有其他 SPCS 服务占用全部容量。

    • 查询仓库:用于处理笔记本中所有 SQL 查询的 Snowflake 仓库。

    • 外部访问集成(可选):定义笔记本可使用的 Snowflake 外部访问集成 (EAIs)。如果您的笔记本需要访问外部 APIs、第三方服务或 Snowflake 内部暂存区之外的云存储,则必须配置 EAIs。如果列表中未显示 EAIs,说明您当前所选角色不拥有任何集成,或没有相关权限。

  6. 检查计划预览,然后选择 Create

如果任务因用户缺少所需权限而失败,对话框将保持打开状态并显示相关错误消息。

查看已计划的笔记本运行

您可以在 2 个位置查看计划的任务:

通过笔记本

  1. 在导航菜单中,选择 Projects » Notebooks

  2. 打开计划的笔记本。

  3. 选择笔记本编辑器右上角的 Schedule。弹出窗口将显示以下信息:

  • 此笔记本的所有计划运行记录。要查看计划的运行或与其交互,您必须使用对创建该计划和项目对象的数据库及架构具有访问权限的角色。

  • 下次计划运行时间。

  • 历史运行状态。将鼠标悬停在状态指示器上,可查看详细信息,例如查询 ID、上次运行时间、持续时间及状态。

通过“Actions”菜单

  • 打开运行历史记录:打开笔记本的项目对象,显示所有历史运行记录,包括状态、持续时间和结果。点击运行结果,将打开已执行的笔记本及其输出内容。

备注

要查看由 Airflow 触发的笔记本运行历史记录,请使用运行 Airflow 的相同用户登录 Snowsight。

将更新部署到计划的笔记本任务

编辑笔记本后,必须先部署更改,计划运行才会使用更新后的版本。部署可确保可重复性,并防止计划任务运行与上次部署版本不同的代码。当笔记本有需要部署的更改时,计划(日历)图标会显示一个时钟指示标。

修改代码或单元格后,该图标表示存在未部署的更改。

  • 选择 Deployed Changes

    随后,Snowflake 会更新关联的笔记本项目对象,该笔记本的所有计划任务将在下一次运行中使用新部署的版本。

在对象资源管理器中查找笔记本项目对象

每个计划的笔记本都会自动创建一个笔记本项目对象,用于存储其部署的代码、执行历史和工件。

要在 Snowsight 中找到笔记本项目对象,请按照以下步骤操作:

  1. 在导航菜单中,选择 Catalog » Database Explorer

  2. Navigate to Database » Schema » Notebook Project Objects to view all project objects in that schema.

或者,您可以:

  1. 打开相关笔记本。

  2. 选择右上角的 Schedule

  3. 从下拉菜单中选择 Run history,打开关联的笔记本项目对象。

查看笔记本的运行历史记录

如果执行过程中任何步骤失败,笔记本会停止运行,以防下游结果不完整或不一致。

要查看运行历史,请按照以下步骤操作:

  1. 在导航菜单中,选择 Projects » Notebooks

  2. 打开要查看运行历史的笔记本。

  3. 在笔记本编辑器右上角,选择计划(日历)图标。

  4. 从下拉菜单中选择 View run history

Run History 显示开始和结束时间、运行状态,以及错误详细信息,如笔记本项目对象的日志和指标。

使用 Tasks 计划笔记本

  1. 在导航菜单中,选择 Projects » Workspaces

  2. 在 SQL 文件/工作表中运行以下命令:

CREATE OR REPLACE TASK <database_name>.<schema_name>.<task_name>
    WAREHOUSE = <warehouse_name>
    SCHEDULE = 'USING CRON 10 13 * * * America/Los_Angeles'
    -- CRON format: <minute> <hour> <day_of_month> <month> <day_of_week> <timezone>
AS
    -- Execute a notebook stored within a Snowflake project.
    EXECUTE NOTEBOOK
        PROJECT = '<database_name>.<schema_name>.<project_name>'
        -- Notebook file to run
        MAIN_FILE = '<notebook_file_name>.ipynb'
        -- Compute pool used to run the notebook
        COMPUTE_POOL = '<compute_pool_name>'
        -- Runtime environment (Python version, CPU/GPU, etc.)
        RUNTIME = '<runtime_version>'
        -- Warehouse used for SQL statements inside the notebook
        QUERY_WAREHOUSE = <query_warehouse_name>;
Copy

创建此任务后,运行以下命令来激活计划:

ALTER TASK <database_name>.<schema_name>.<task_name> RESUME;
Copy

备注

要了解有关 Credit 使用量、空闲超时行为及笔记本服务管理的更多信息,请参阅 设置计算空闲超时

语言: 中文