EXECUTE JOB SERVICE¶
备注
Snowflake 的支持政策和服务级别协议 中规定的服务级别目前不包括此操作。
将 Snowpark Container Services 服务作为作业执行。
使用 CREATE SERVICE 创建的服务运行时间较长,因此,不再需要该服务时必须明确停止它。另一方面,使用 EXECUTE JOB SERVICE 创建的作业是一种在代码退出时终止的服务,这类似于存储过程。当所有容器都退出时,作业便已完成。
作业以同步方式运行;EXECUTE JOB SERVICE 命令在所有容器都退出后完成。作业完成后,Snowflake 会自动进行必要的清理。但是,这种清理工作不会立即发生。Snowflake 会在短时间内保留作业,以便客户在作业执行后监控和调试作业服务。
请注意,必须按特定顺序指定命令参数。有关更多信息,请参阅“使用说明”部分。
语法¶
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>' , ... ] ) ]
其中:
fromSpecification ::= { FROM @<stage> SPECIFICATION_FILE = '<yaml_file_stage_path>' | FROM SPECIFICATION <specification_text> }fromSpecificationTemplate ::= { FROM @<stage> SPECIFICATION_TEMPLATE_FILE = '<yaml_file_stage_path>' | FROM SPECIFICATION_TEMPLATE <specification_text> } USING ( <key> => <value> [ , <key> => <value> [ , ... ] ] )
必填参数¶
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_FILE
或FROM SPECIFICATION_TEMPLATE
)。键值对必须形成逗号分隔的列表。其中:
key
是模板变量的名称。模板变量名称可以选择放在双引号 ("
) 内。value
是模板中要分配给变量的值。字符串值必须放在'
或$$
内。值必须是字母数字或有效的 JSON。
访问控制要求¶
权限 |
对象 |
备注 |
---|---|---|
CREATE SERVICE |
架构 |
|
USAGE |
计算池 |
|
READ |
暂存区 |
这是存储规范的暂存区。 |
READ |
镜像仓库 |
规范引用的镜像仓库。 |
请注意,对架构中的对象进行操作还需要对父数据库和架构具有 USAGE 权限。
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
在调用 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';