全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
流计算

参数变量

更新时间:2017-06-07 13:26:11

流计算支持作业级别参数定义,通过对流计算作业配置参数,用户可以:

  1. 使用系统参数调整作业运行时行为,例如用户可以指定作业运行的并发度,从而增加或者减缩吞吐量。

  2. 使用逻辑参数隔离环境变化,例如用户可以使用同一份代码,填充不同的环境参数,已做到不同环境之间作业切换。

必须说明的是,目前流计算仅支持作业级别的参数配置,未来还会拓展到Project级别的参数配置。

流计算作业静态构成

一个静态的流计算作业目前分为几大类静态信息,包括:

  • 代码

    SQL代码,用户编写的业务逻辑,流计算作业核心逻辑。

  • 参数

    参数用来描述作业运行时指标,例如并发量、批处理数据量等信息。

  • 属性

    作业的业务信息,例如创建人、创建时间等相关记录。

上述三类信息是一个流计算作业的静态信息,它们共同构成了一个完整的流计算作业静态信息。流计算作业一旦启动后,作业会附带出现各类运行时动态信息。这些信息非用户生成,而是我们流计算系统运行时状态反馈。


流计算作业参数分为两种类型,解决两类场景问题。我们分别讲解如下:

系统参数

流计算预留了部分系统参数名称。这类参数是系统运行时配置,用户使用这些参数可以修改作业运行时特征,例如作业并发度等。这类系统参数均是使用stream或者galaxy全小写字符串开头。有关系统参数具体的参考手册请查阅《SQL系统参数说明》。对于系统参数,用户使用方式如下:

调试参数

用户在作业参数栏填写系统参数即可。特别注意的是参数属于作业组成部分之一,因此参数的改动和SQL改动、作业属性改动一样,同样也会被流计算视作作业有改动,会触发流计算的自动保存功能。

注意,系统参数改动后,如果需要对生产作业进行修改,必须进行提交并重启作业(可以是作业停止重启,也可以是暂停并按照最新配置恢复),否则修改的参数不会在流计算集群生效。

用户参数

用户参数指用户自定义的参数信息,用户通过在SQL文件中设置参数名称,同时在作业参数中填写相应参数值,流计算即在提交中将根据用户填写参数进行渲染,并将最终渲染后的代码提交流计算生产集群。使用步骤如下:

  • 用户在SQL的DDL with语句中预设参数变量,并使用${参数变量名}进行占位。

设置变量

  • 用户在上述”作业参数”工具栏中,参看系统参数的规范,使用如下方式即可进行变量值定义,如下所示:

    参数变量名 = 参数变量值

    用户在SQL中定义参数中如果出现没有定义的参数值,流计算将报错,并提示存在没有渲染的变量值。用户必须在提交上线作业前,将所有填写的变量名提供变量值。

设置变量值

  • 用户在提交过程中,流计算将渲染完成所有用户定义的参数,并将替换完成的最终代码文件提交到生产集群。

用户参数约束

针对用户参数灵活性,流计算对此进行一系列约束,用户必须按照如下约束处理参数:

  1. 用户参数使用范围仅限于with子句中,对于不在with语句中的用户自定义参数,流计算不推荐使用,且产品不定义这类行为。

  2. 所有的用户参数名称仅支持大小写英文字符、数字、下划线、中划线、英文点号,不允许其他字符集,不支持中文。

  3. 所有的用户参数名称不允许使用stream或者galaxy开头,这类参数名是系统预留参数,不允许重新定义。重新定义产品行为不确定。

  4. 作业的用户参数变量个数不做限制,但整体参数文件不超过1MB。

  5. 变量的定义不支持嵌套,例如:

    1. --sql定义
    2. with (
    3. topic='${bazhen}'
    4. );
    5. --变量定义
    6. bazhen=${bazhen}

    上述属于嵌套定义,产品不支持,也不做行为定义,不推荐用户使用。

本文导读目录