关于mysql:Apache-Linkis自定义变量实践分享

7次阅读

共计 1780 个字符,预计需要花费 5 分钟才能阅读完成。

  1. 总述
    需要背景
    用户心愿在写代码时,可能定义一些公共变量而后执行的时候进行替换,比方用户每天都会批量跑同一段 sql,须要指定上一天的分区工夫,如果基于 sql 去写会比较复杂如果零碎提供一个 run_date 的变量将会十分方便使用。

指标
反对工作代码的变量替换
反对自定义变量,反对用户在脚本和提交给 Linkis 的工作参数定义自定义变量,反对简略的 +,- 等计算
预设置零碎变量:run_date,run_month,run_today 等零碎变量

  1. 总体设计
    在 Linkis 工作执行过程中自定义变量在 Entrance 进行,次要通过 Entrance 在工作提交执行前的拦截器进行拦挡替换实现,通过正则表达式获取到工作代码中应用到的变量和定义的变量,并通过工作传入的自定义变量初始值实现代码的替换,变成最终能够执行的代码。

2.1 技术架构
自定义变量整体架构如下,用于工作提交过去后,会通过变量替换拦截器。首先会解析出所有代码中用到的变量和表达式,而后通过和零碎以及用户自定义的变量初始值进行替换,最终将解析后的代码提交给 EngineConn 执行。所以到底层引擎曾经是替换好的代码。
图片

  1. 性能介绍
    Linkis 反对的变量类型分为自定义变量和零碎内置变量,外部变量是 Linkis 事后定义好的,能够间接进行应用。而后不同的变量类型反对不同的计算格局:String 反对 +、整数小数反对 +-*/, 日期反对 +-。

3.1 内置变量
目前已反对的内置变量如下:
图片

具体细节:
1、run_date 为外围自带日期变量,反对用户自定义日期,如果不指定默认为以后零碎工夫的前一天。
2、其余衍生内置日期变量定义:其余日期内置变量都是绝对 run_date 计算出来的,一旦 run_date 变动,其余变量值也会主动跟着变动,其余日期变量不反对设置初始值,只能通过批改 run_date 进行批改。
3、内置变量反对更加丰盛的应用场景:${run_date-1}为 run_data 的前一天;${run_month_begin-1}为 run_month_begin 的上个月的第一天,这里的 - 1 示意减一个月。

3.2 自定义变量
什么是自定义变量?先定义,后应用的用户变量。用户自定义变量临时反对字符串,整数,浮点数变量的定义,其中字符串反对 + 法,整数和浮点数反对 +-*/ 办法。用户自定义变量与 SparkSQL 和 HQL 自身反对的 set 变量语法不抵触,然而不容许同名。如何定义和应用自定义变量?如下:

代码中定义,在工作代码前进行指定

sql 类型定义形式:

–@set f=20.1

python/Shell 类型定义如下:

@set f=20.1

留神:只反对一行定义一个变量

应用都是间接在代码中应用通过 {varName 表达式}, 如 ${f*2}

3.3 变量作用域
在 linkis 中自定义变量也有作用域,优先级为脚本中定义的变量大于在工作参数中定义的 Variable,大于内置的 run_date 变量。工作参数中定义如下:

restful

{

“executionContent”:{“code”:”select \”${f-1}\”;”,”runType”:”sql”},

“params”:{

“variable”:{f:”20.1″},

“configuration”:{

“runtime”:{

“linkis.openlookeng.url”:”http://127.0.0.1:9090″

}

}

},

“source”:{“scriptPath”:”file:///mnt/bdp/hadoop/1.sql”},

“labels”:{

“engineType”:”spark-2.4.3″,

“userCreator”:”hadoop-IDE”

}

}

java SDK

JobSubmitAction.builder

.addExecuteCode(code)

.setStartupParams(startupMap)

.setUser(user)//submit user

.addExecuteUser(user)//execute user

.setLabels(labels)

.setVariableMap(varMap)//setVar

.build

  1. 最初
    社区以后正在举办征文大赛,最高处分可得“1000 元京东卡 +500 元社区礼品”哦,戳 https://mp.weixin.qq.com/s/Kn… 理解
正文完
 0