Değişken kullanımı, AccessKey veya parola gibi düz metin kimlik bilgilerinin oluşturduğu güvenlik risklerini önlemenize yardımcı olur. Değişkenleri yeniden kullanmak ayrıca tekrarlayan kodları ve değerleri ortadan kaldırarak yapılandırma yönetimini basitleştirir. SQL işlerinde, JAR/Python dağıtımlarında, günlük kaydı yapılandırmalarında ve kullanıcı arayüzü ayarlarında değişken desteği bulunur. Bu konuda, değişkenlerin nasıl oluşturulacağı ve farklı senaryolarda nasıl kullanılacağı açıklanmaktadır.
Arka plan bilgileri
Bir değişken bir addan ve bir değerden oluşur. Tanımladığınız ad, gerçek veriler için yer tutucu görevi görür ve genellikle anlamını yansıtır. Değer ise adın temsil ettiği gerçek veridir. Flink iki tür değişkeni destekler: dağıtım değişkenleri ve ad alanı değişkenleri. Aralarındaki farklar aşağıda verilmiştir:
Dağıtım değişkeni: Yalnızca tek bir dağıtım içinde (örneğin bir ETL SQL işinde veya JAR/Python dağıtımında ana işlev bağımsız değişkeni olarak) kullanılabilir. Bir dağıtım değişkenine başvuru formatı ${variable_name} şeklindedir. Daha fazla bilgi için bkz. Dağıtım değişkenleri.
Ad alanı değişkeni: Tüm bir ad alanı genelinde kullanılabilir. Buna Geliştirme bölümünde (veri alımı, ETL ve sorgu betikleri için), JAR/Python dağıtımlarında ana işlev bağımsız değişkeni olarak, dağıtım parametre yapılandırmalarında, günlük kaydı yapılandırmalarında ve kullanıcı arayüzü ayarlarında (Catalog oluşturma gibi) kullanım dahildir. Bir ad alanı değişkenine başvuru formatı ${secret_values.variable_name} şeklindedir. Bunların nasıl oluşturulup kullanılacağını öğrenmek için bkz. Ad alanı değişkenleri.
Kullanım notları
Tek bir değişken adı için birden fazla değer yapılandıramazsınız.
Değişken adları olarak anahtar sözcükler kullanmaktan kaçının.
SQL işlerinde değişkenleri yalnızca geçici bir tabloda (CREATE TEMPORARY TABLE) kullanabilirsiniz. Kalıcı bir tabloda (CREATE TABLE) değişken kullanılması tablonun hatalı çalışmasına neden olur.
Dağıtım değişkenleri
Dağıtım değişken adları, tek bir dağıtım içinde benzersiz olmalıdır.
ETL (SQL işi)
SQL işi geliştirme sırasında, özel işlevler için bağımsız değişkenler dahil olmak üzere değişkenleri kullanabilirsiniz. İşi başlatırken değişken değerlerini de değiştirebilirsiniz.
Realtime Compute for Apache Flink konsolunun sol gezinme bölmesinde, şuraya gidin: .
-
Hedef SQL işinizin SQL düzenleyicisinde, aşağıdaki örnekte gösterildiği gibi ${variable_name} formatını kullanarak değişkenler oluşturun.
WITH yan tümcesinde bir parametre olarak kullanıldığında, değişkeni tek tırnak içine alın: '${variable_name}'.
Diğer konumlarda (örneğin SQL tablo veya alan adları için) kullanıldığında, değişkeni geri tırnak içine alın:
${variable_name}.
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, SQL işinde bu formatı kullanan dağıtım değişkenlerini otomatik olarak tanımlar. Bu değişkenler için değer girmeniz gerekir.
-
Yöntem 1: SQL düzenleyicide Job Variables paneli görünür. Değerleri bu panele girin.
Job Variables panelinde anahtar-değer çiftlerini yapılandırın:
source_name=datagen,test_name=nameveblackhole=blackhole. -
Yöntem 2: Sağ taraftaki More Configurations seçeneğine tıklayın. Değerleri Job Variables bölümüne girin.
Örneğin,
source_namedeğişkeninidatagenolarak,test_namedeğişkenininameolarak veblackholedeğişkeniniblackholeolarak yapılandırın. Ardından, bu değerlere SQL kodunuzda${variable_name}sözdizimini kullanarak başvurabilirsiniz.
-
-
İş dağıtıldıktan sonra, işin ayrıntılar sayfasındaki Deployments sekmesi altında Deployment Details sekmesinden değişkenlerini görüntüleyebilirsiniz.
İş özelliklerinde, Job Variables satırı yapılandırılmış değişkenleri (örneğin source_name, test_name ve blackhole) ve bunlara karşılık gelen değerleri gösterir.
-
Hedef işin Actions sütununda Start seçeneğine tıklayın. İş başlatma panelinde değişken değerlerini değiştirebilirsiniz.
Önemliİş başlatma panelinde yapılan değişken değeri değişiklikleri yalnızca mevcut iş çalıştırmasına uygulanır. SQL işinde tanımlanan değerleri değiştirmez.
İş başlatma panelinde stateless start veya stateful start modunu seçebilirsiniz. Stateful start'i seçerseniz, Recover from latest state gibi kurtarma seçeneklerini yapılandırabilirsiniz. Job Variables bölümü,
source_nameiçindatagen,test_nameiçinnameveblackholeiçinblackholegibi değişkenleri ve varsayılan değerlerini görüntüler. Bunları gerektiği gibi değiştirebilir ve ardından Start seçeneğine tıklayabilirsiniz.
JAR/Python dağıtımı
JAR/Python dağıtımlarında ana işlev için bağımsız değişken olarak değişkenleri kullanabilirsiniz.
Yöntem 1: Ad alanı değişkenlerini kullanma
Yeni bir değişken oluşturun. Ayrıntılar için bkz. Değişken oluşturma.
Realtime Compute for Apache Flink konsolunda, şuraya gidin: ve Deploy Job seçeneğine tıklayın.
-
Entry Point Main Arguments alanında, bağımsız değişkeni
--variable_in_code ${secret_values.variable_in_management}formatını kullanarak girin.Bir değişken adının özel karakterler içermesi gerekiyorsa, bkz. Entry Point Main Arguments kullanırken özel karakterleri parametre olarak nasıl aktarırım?.
Örneğin, her parametreyi yeni bir satıra yazarak
--akid ${secret_values.test1}ve--aksecret ${secret_values.test2}girin.Diğer dağıtım parametreleriyle ilgili ayrıntılar için bkz. İş dağıtma.
Deploy seçeneğine tıklayın.
Hedef dağıtımın Actions sütununda Start seçeneğine tıklayın.
Yöntem 2: Dağıtım değişkenlerini kullanma
Realtime Compute for Apache Flink konsolunda, şuraya gidin: ve Deploy Job seçeneğine tıklayın.
-
Entry Point Main Arguments alanında, bağımsız değişkeni
--variable_in_code ${deployment_variable_name}formatını kullanarak girin ve ardından aşağıdaki Job Variables bölümünde değişken değerini sağlayın.Bir değişken adının özel karakterler içermesi gerekiyorsa, bkz. Entry Point Main Arguments kullanırken özel karakterleri parametre olarak nasıl aktarırım?.
Örneğin,
--akid ${test1} --aksecret ${test2}girin, ardındantest1(AccessKey ID) vetest2(AccessKey Secret) değişkenlerini ekleyin ve gerçek kimlik bilgilerini bunların varsayılan değerleri olarak girin.Diğer dağıtım parametreleriyle ilgili ayrıntılar için bkz. İş dağıtma.
Deploy seçeneğine tıklayın.
-
Hedef dağıtımın Actions sütununda Start seçeneğine tıklayın. İş başlatma panelinde değişken değerlerini değiştirebilirsiniz.
Bir başlatma modu seçin: stateless start (başlangıç durumu olmadan) veya stateful start (mevcut bir durumdan). Ayrıca Configuration Autotuning özelliğini etkinleştirebilirsiniz.
Ad alanı değişkenleri
Değişken oluşturma
Yalnızca düzenleyici veya daha yüksek izinlere sahip üyeler ya da değişken oluşturma iznine sahip özel üyeler değişken oluşturabilir.
Realtime Compute for Apache Flink konsoluna giriş yapın. Hedef çalışma alanını bulun ve Actions sütununda Console seçeneğine tıklayın.
-
Sol gezinme bölmesinde, şuraya gidin: ve Add Variable seçeneğine tıklayın.
Parametre
Açıklama
Değişken Adı
Değişken adı, ad alanı içinde benzersiz olmalı ve oluşturulduktan sonra değiştirilememelidir.
Değişken Değeri
Değişken değerleri büyük/küçük harfe duyarlıdır. Değer, oluşturulduktan sonra değiştirilebilir. Ayrıntılar için bkz. Değişkeni düzenleme veya silme.
Tür (Düz Metin/Şifreli Metin)
Tür, oluşturulduktan sonra değiştirilemez.
-
Düz Metin: Değişken değeri Variables sayfasında doğrudan görünür.
-
Şifreli Metin: Değişken değeri gizlidir.
Değişken oluşturulduktan sonra, Variables sayfasındaki listede adını, türünü, değerini ve oluşturulma zamanını görüntüleyebilirsiniz. Ayrıca değişkeni Edit veya Delete edebilirsiniz.
-
OK seçeneğine tıklayın.
Değişken kullanma
Bir değişken oluşturduktan sonra, bunu ${secret_values.variable_name} formatını kullanarak başvurabilirsiniz. "variable_name" yerine kendi değişkeninizin adını yazın.
Geliştirme
Realtime Compute for Apache Flink konsolunun Development bölümünde ad alanı değişkenlerini kullanabilirsiniz.
ETL (SQL)
Aşağıdaki örnekte gösterildiği gibi, bir SQL işinin DDL'sinde değişkenleri ${secret_values.variable_name} formatıyla başvurarak kullanabilirsiniz.
WITH yan tümcesinde bir parametre olarak kullanıldığında, değişkeni tek tırnak içine alın: '${secret_values.variable_name}'.
Diğer konumlarda (örneğin SQL tablo veya alan adları için) kullanıldığında, değişkeni geri tırnak içine alın:
${secret_values.variable_name}.
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}`;
Veri alımı
source:
type: mysql
name: Mysql Source
hostname: localhost
port: 3306
username: test
password: ${secret_values.mysqlpw}
tables: app_db.\.*
server-id: 5400-5404
···
Veri sorgulama
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 dağıtımı
JAR/Python dağıtımlarında ana işlev için bağımsız değişken olarak değişkenleri kullanabilirsiniz.
Geliştirme konsolunda, şuraya gidin: ve Deploy Job seçeneğine tıklayın.
-
Entry Point Main Arguments alanında, bağımsız değişkeni aşağıdaki formatı kullanarak girin.
Örnek:
--input ${secret_values.input}; burada${secret_values.variable_name}bir değişkene başvurma sözdizimidir.Diğer dağıtım parametreleriyle ilgili ayrıntılar için bkz. İş dağıtma.
Deploy seçeneğine tıklayın.
Çalışma zamanı parametre yapılandırması
İş çalışma zamanı parametrelerinde değişkenleri kullanabilirsiniz.
sayfasına gidin ve hedef işe tıklayın.
-
Deployment Details sekmesinde, Runtime Parameter Configuration bölümünün sağ üst köşesindeki Edit seçeneğine tıklayın ve parametreleri yapılandırın. Aşağıdaki örnekte gösterildiği gibi parametre değerleri olarak değişkenleri kullanabilirsiniz.
Other Configurations metin alanında, değişkenlere başvurmak için
${secret_values.xxx}formatını kullanın. Örneğin, Jindo OSS erişim kimlik bilgilerini yapılandırmak içinfs.oss.jindo.buckets,fs.oss.jindo.accessKeyIdvefs.oss.jindo.accessKeySecretgibi parametreleri ayarlayabilirsiniz. Save seçeneğine tıklayın.
Günlük kaydı yapılandırması
-
Günlük kaydı yapılandırma sayfasına gidin.
Tek bir iş için günlük kaydını yapılandırmak üzere bkz. Tek bir iş için günlük çıktı kanalı yapılandırma.
Bir ad alanındaki tüm işler için günlük kaydını yapılandırmak üzere bkz. Bir ad alanındaki tüm işler için varsayılan günlük çıktı kanalı yapılandırma.
-
Günlük kaydı yapılandırmasında değişkenleri kullanın.
Örneğin, iş günlüklerini SLS'ye göndermek için yapılandırma yaparken 'accessKeyId' ve 'accessKeySecret' için değişkenleri kullanabilirsiniz. Günlük çıktısı yapılandırmasıyla ilgili eksiksiz bilgiler için bkz. İş günlük çıktısını yapılandırma.
<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>
Kullanıcı arayüzü
Kullanıcı arayüzü üzerinden bir Catalog oluştururken yapılandırma öğelerinde değişkenleri kullanabilirsiniz.
Realtime Compute for Apache Flink konsolunun sol gezinme bölmesinde, şuraya tıklayın: Catalogs.
-
Create Catalog sayfasında değişkenleri kullanın. Aşağıdaki örnek, bir MySQL Catalog'undaki parola parametresi için
mysqlpasswordadlı bir değişkenin nasıl kullanılacağını göstermektedir.password alanında, gizli değere başvurmak için
${secret_values.mysqlpassword}girin.
Değişkeni düzenleme veya silme
Değişkenleri düzenlerken veya silerken dikkatli olun. Bu işlem, başvuruda bulunan dağıtımların başarısız olmasına veya çevrimiçi işleri yeniden dağıtmanıza neden olabilir. Çalışan işler etkilenmez.
Realtime Compute for Apache Flink konsoluna giriş yapın. Hedef çalışma alanını bulun ve Actions sütununda Console seçeneğine tıklayın.
-
Sol gezinme bölmesinde, şuraya gidin: . Hedef değişkeni bulun ve Actions sütununda Edit veya Delete seçeneğine tıklayın.
-
Düzenle
Bir değişkenin değerini değiştirebilirsiniz. Yalnızca düzenleyici veya daha yüksek izinlere sahip üyeler değişkenleri düzenleyebilir.
-
Sil
Yalnızca düzenleyici veya daha yüksek izinlere sahip üyeler ya da değişken silme iznine sahip özel üyeler değişkenleri silebilir.
-
İlgili belgeler
Bir SQL işinin nasıl geliştirileceğini öğrenmek için bkz. İş geliştirme genel bakış.
JAR/Python dağıtımları için dağıtım parametreleri hakkında bilgi almak için bkz. İş dağıtma.
Catalog'ların nasıl oluşturulup kullanılacağını öğrenmek için bkz. Veri yönetimi.
Desteklenen bağlayıcılarla ilgili ayrıntılar için bkz. Desteklenen bağlayıcılar.