變量管理
使用變量可以避免明文AccessKey、密碼等信息帶來的安全風險,通過復用可以避免重復編寫相同的代碼或值,易于配置管理。支持在SQL作業(yè)、JAR或Python作業(yè)、日志配置和UI界面等場景中使用。本文為您介紹如何創(chuàng)建變量,以及不同場景下的使用方法。
背景信息
變量由名(稱)和值組成,名是用來代替真實數(shù)據(jù)的名稱,由您自定義,通常能夠直接反映值的含義,值則是實際要使用而被名稱代替展示的值。Flink支持作業(yè)變量和項目變量兩種,區(qū)別如下:
作業(yè)變量:僅支持在對應的單個作業(yè)下使用,包括ETL(SQL開發(fā))、JAR/Python作業(yè)Main函數(shù)入?yún)ⅲ褂酶袷綖?code data-tag="code" code-type="xCode" class="code">${變量名},具體使用方法請參見作業(yè)變量。
項目變量:支持在該項目空間下使用,包括數(shù)據(jù)開發(fā)(數(shù)據(jù)攝入、ETL、查詢腳本)、JAR/Python作業(yè)Main函數(shù)入?yún)ⅰ⑷罩九渲煤蚒I界面(創(chuàng)建Catalog),使用格式為
${secret_values.變量名}
,具體創(chuàng)建和使用方法請參見項目變量。
注意事項
不支持為一個變量名配置多個值。
請避免使用關鍵字作變量名。
SQL作業(yè)中僅支持在臨時表(CREATE TEMPORARY TABLE)中使用變量,持久表(CREATE TABLE)中使用會導致該表無法正常使用。
作業(yè)變量
作業(yè)變量名需要在單個作業(yè)內(nèi)保持唯一。
ETL(SQL作業(yè))
支持在SQL作業(yè)開發(fā)中(包括自定義函數(shù)入?yún)ⅲ┦褂米兞浚⒃谧鳂I(yè)啟動時可再次修改變量值。
單擊Flink開發(fā)控制臺左側導航欄的
。在目標作業(yè)草稿的SQL編輯器中使用
${變量名}
格式創(chuàng)建變量,示例如下。在WITH參數(shù)中使用時,需要使用單引號,
'${變量名}'
。在其他位置使用(例如SQL表名、字段)時,需要使用反引號
`${變量名}`
。
create temporary table `${source_name}`( id varchar, name varchar ) with ( 'connector' = 'datagen' ); create temporary table blackhole( id varchar, `${test_name}` varchar ) with ( 'connector' = '${blackhole}' ); insert into blackhole select * from `${source_name}`;
Flink會自動識別作業(yè)草稿中使用了該格式的作業(yè)變量,您需要填寫變量值。
方法一:SQL編輯器會出現(xiàn)作業(yè)變量面板,可直接在面板中進行填寫。
方法二:單擊右側的更多配置,在作業(yè)變量區(qū)域進行填寫。
作業(yè)部署后,您可以在作業(yè)運維頁面目標作業(yè)的部署詳情頁簽查看作業(yè)使用的變量。
單擊目標作業(yè)操作列下的啟動。支持在作業(yè)啟動面板中修改變量值。
重要作業(yè)啟動面板中修改變量值僅對作業(yè)本次啟動生效,不會修改SQL草稿中對應的變量值。
JAR/Python作業(yè)
支持JAR和Python作業(yè)中Main函數(shù)入?yún)⑹褂米兞俊?/p>
在開發(fā)控制臺的
頁面,單擊部署作業(yè)。在Entry Point Main Arguments參數(shù)位置輸入入?yún)⒆兞棵褂酶袷饺缦拢⒃趨?shù)下方的作業(yè)變量部分填寫變量值。
其他部署參數(shù)配置詳情請參見部署作業(yè)。
單擊部署。
單擊目標作業(yè)操作列下的啟動。支持在作業(yè)啟動面板中修改變量值。
項目變量
新增變量
僅editor及以上權限或具有創(chuàng)建變量權限的成員支持新增變量。
使用變量
增加變量后,您可以通過${secret_values.變量名}
格式使用,使用時您僅需將其中的變量名進行修改,其他部分保留不變,具體示例如下。
數(shù)據(jù)開發(fā)
支持在實時計算開發(fā)控制臺的數(shù)據(jù)開發(fā)下使用項目變量。
ETL(SQL開發(fā))
支持在SQL作業(yè)的DDL中通過${secret_values.變量名}
格式使用變量,示例如下。
在WITH參數(shù)中使用時,需要使用單引號,
'${secret_values.變量名}'
。在其他位置使用(例如SQL表名、字段)時,需要使用反引號
`${secret_values.變量名}`
。
create temporary table `${secret_values.source_name}`(
id varchar,
name varchar
) with (
'connector' = 'datagen'
);
create temporary table blackhole(
id varchar,
`${secret_values.test_name}` varchar
) with (
'connector' = '${secret_values.blackhole}'
);
insert into blackhole select * from `${secret_values.source_name}`;
數(shù)據(jù)攝入
source:
type: mysql
name: Mysql Source
hostname: localhost
port: 3306
username: test
password: ${secret_values.mysqlpw}
tables: app_db.\.*
server-id: 5400-5404
···
數(shù)據(jù)查詢
USE CATALOG paimon;
CREATE DATABASE IF NOT EXISTS `${secret_values.test_name}`;
CREATE TABLE paimon.`${secret_values.test_name}`.ods_user_log
(
item_id int NOT NULL,
`${secret_values.user}` varchar(50) NOT NULL,
action varchar(20) NOT NULL,
vtime timestamp,
ds varchar(10) NOT NULL
)
PARTITIONED BY (ds);
SELECT * from paimon.`${secret_values.test_name}`.ods_user_log LIMIT 10;
JAR/Python作業(yè)
支持JAR和Python作業(yè)中Main函數(shù)入?yún)⑹褂米兞俊?/p>
在開發(fā)控制臺的
頁面,單擊部署作業(yè)。在Entry Point Main Arguments參數(shù)位置輸入入?yún)⒆兞棵褂酶袷饺缦隆?/p>
其他部署參數(shù)配置詳情請參見部署作業(yè)。
單擊部署。
日志配置
進入日志配置頁面。
配置單個作業(yè),具體操作請參見配置單個作業(yè)日志輸出。
配置項目空間下所有作業(yè),具體操作請參見配置項目空間下所有作業(yè)日志輸出。
在日志配置中使用變量。
例如,在配置作業(yè)日志輸出到SLS時使用名為accessKeyId和accessKeySecret的變量示例如下,完整日志輸出配置信息具體請參見配置作業(yè)日志輸出。
<Appender name="SLS" type="SLS"> <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout" charset="UTF-8"/> <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ --> <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line --> <Property name="project">YOUR-SLS-PROJECT</Property> <Property name="logStore">YOUR-SLS-LOGSTORE</Property> <Property name="endpoint">YOUR-SLS-ENDPOINT</Property> <Property name="accessKeyId">${secret_values.accessKeyId}</Property> <Property name="accessKeySecret">${secret_values.accessKeySecret}</Property> <Property name="topic">{{ namespace }}:{{ deploymentId }}:{{ jobId }}</Property> <Property name="deploymentName">{{ deploymentName }}</Property> <Property name="flushIntervalSeconds">10</Property> <Property name="flushIntervalEventCount">100</Property> </Appender>
UI界面
在通過UI界面方式創(chuàng)建Catalog時,您可以在配置項中使用變量。
在開發(fā)控制臺左側導航欄,單擊元數(shù)據(jù)管理。
在創(chuàng)建Catalog頁面使用變量。例如在MySQL Catalog中的password參數(shù)使用名為
mysqlpassword
的變量示例如下。
編輯或刪除變量
請謹慎刪除或編輯變量,可能會導致使用變量的作業(yè)無法部署,或需要重新部署已上線的作業(yè)。但不影響運行中的作業(yè)。
登錄實時計算控制臺,單擊目標工作空間操作列下的控制臺。
在
頁面,單擊目標變量名操作列下編輯或刪除。編輯
支持對變量值進行修改。僅editor及以上權限成員支持編輯變量。
刪除
僅editor及以上權限或具有刪除變量權限的成員支持刪除變量。
相關文檔
SQL作業(yè)開發(fā)步驟,詳情請參見SQL作業(yè)開發(fā)。
JAR和Python作業(yè)部署參數(shù)說明,詳情請參見部署作業(yè)。
創(chuàng)建和使用Catalog,詳情請參見管理元數(shù)據(jù)。
支持的連接器詳情請參見支持的連接器。
查看、創(chuàng)建項目空間級變量的相關API,詳情請參見變量。