EXECUTE JOB SERVICE

备注

Snowflake 的支持政策和服务级别协议 中规定的服务级别目前不包括此操作。

将 Snowpark Container Services 服务作为作业执行。

使用 CREATE SERVICE 创建的服务运行时间较长,因此,不再需要该服务时必须明确停止它。另一方面,使用 EXECUTE JOB SERVICE 创建的作业是一种在代码退出时终止的服务,这类似于存储过程。当所有容器都退出时,作业便已完成。

作业以同步方式运行;EXECUTE JOB SERVICE 命令在所有容器都退出后完成。作业完成后,Snowflake 会自动进行必要的清理。但是,这种清理工作不会立即发生。Snowflake 会在短时间内保留作业,以便客户在作业执行后监控和调试作业服务。

请注意,必须按特定顺序指定命令参数。有关更多信息,请参阅“使用说明”部分。

另请参阅:

SYSTEM$GET_SERVICE_STATUS – 已弃用SYSTEM$GET_SERVICE_LOGS

语法

EXECUTE JOB SERVICE
  IN COMPUTE POOL <compute_pool_name>
  {
     fromSpecification
     | fromSpecificationTemplate
  }
  NAME = [<db>.<schema>.]<name>
  [ QUERY_WAREHOUSE = <warehouse_name> ]
  [ COMMENT = '<string_literal>']
  [ EXTERNAL_ACCESS_INTEGRATIONS = ( <EAI_name> [ , ... ] ) ]
  [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
Copy

其中:

fromSpecification ::=
  {
    FROM @<stage> SPECIFICATION_FILE = '<yaml_file_stage_path>'
    | FROM SPECIFICATION <specification_text>
  }
Copy
fromSpecificationTemplate ::=
  {
    FROM @<stage> SPECIFICATION_TEMPLATE_FILE = '<yaml_file_stage_path>'
    | FROM SPECIFICATION_TEMPLATE <specification_text>
  }
  USING ( <key> => <value> [ , <key> => <value> [ , ... ] ]  )
Copy

必填参数

IN COMPUTE POOL compute_pool_name

指定要在其上运行服务的账户中的计算池名称。

FROM stage

指定存储规范文件的 Snowflake 内部暂存区,例如,@tutorial_stage

SPECIFICATION_FILE = 'yaml_file_stage_path'

指定暂存区中 服务规范 文件的路径,例如 'some-dir/echo_spec.yaml'

SPECIFICATION_TEMPLATE_FILE = 'yaml_file_stage_path'

指定暂存区中 服务规范 模板文件的路径,例如 'some-dir/echo_template_spec.yaml'。当指定 SPECIFICATION_TEMPLATE_FILE 时,USING 参数是必填的。

FROM SPECIFICATION specification_text

指定 服务规范。您可以使用一个 美元符号对 ($$) 分隔规范字符串的开头和结尾。

FROM SPECIFICATION_TEMPLATE specification_text

指定 服务规范。您可以使用一个 美元符号对 ($$) 分隔规范字符串的开头和结尾。当指定 SPECIFICATION_TEMPLATE 时,USING 参数是必填的。

NAME = [db.schema.]name

像作业一样执行的服务的名称(即标识符);对于在其中创建服务的架构,它必须是唯一的。

不支持带引号的特殊字符名称或区分大小写的名称。同样的约束也适用于在其中创建服务的数据库和架构名称。也就是说,在创建服务时,不带引号的数据库和架构名称是有效的。

可选参数

EXTERNAL_ACCESS_INTEGRATIONS = ( EAI_name [ , ... ] )

指定允许作业访问外部站点的 外部访问集成 的名称。此列表中的名称区分大小写。默认情况下,应用程序容器没有访问互联网的权限。如果要允许作业访问外部站点,请创建外部访问集成 (EAI),并将作业配置为使用该集成。有关更多信息,请参阅 配置网络出口

QUERY_WAREHOUSE = warehouse_name

要在以下情况下使用的仓库:服务容器连接到 Snowflake 以执行查询,但未显式指定要使用的仓库。

默认值:None。

COMMENT = 'string_literal'

指定服务的注释。

默认:无值

TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )

指定 标签 名称和标签字符串值。

标签值始终为字符串,标签值的最大字符数为 256。

有关在语句中指定标签的信息,请参阅 对象和列的标签配额

USING ( key => value [ , key => value [ , ... ] ]  )

可让您提供值来参数化规范模板扩展。

当使用规范模板时,USING 是必填的(FROM SPECIFICATION_TEMPLATE_FILEFROM SPECIFICATION_TEMPLATE)。键值对必须形成逗号分隔的列表。

其中:

  • key 是模板变量的名称。模板变量名称可以选择放在双引号 (") 内。

  • value 是模板中要分配给变量的值。字符串值必须放在 '$$ 内。值必须是字母数字或有效的 JSON。

访问控制要求

用于执行此 SQL 命令的 角色 必须至少具有以下 权限

权限

对象

备注

CREATE SERVICE

架构

USAGE

计算池

READ

暂存区

这是存储规范的暂存区。

READ

镜像仓库

规范引用的镜像仓库。

请注意,对架构中的对象进行操作还需要对父数据库和架构具有 USAGE 权限。

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

使用说明

  • 在调用 EXECUTE JOB SERVICE 时,参数应按以下顺序提供:指定计算池,然后指定其他属性,最后指定服务规范(暂存区中的提供程序规范文件名或内联规范)。

  • 关于元数据:

    注意

    客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段

示例

执行 Snowpark Container Services 作业服务:

EXECUTE JOB SERVICE
  IN COMPUTE POOL tutorial_compute_pool
  NAME = tutorial_db.data_schema.example_job
  FROM @tutorial_stage
  SPECIFICATION_FILE='my_job_spec.yaml';
Copy
语言: 中文