Penggunaan variabel membantu Anda menghindari risiko keamanan yang terkait dengan kredensial dalam teks biasa, seperti AccessKey atau password. Penggunaan ulang variabel juga menghindari pengulangan kode dan nilai, sehingga menyederhanakan manajemen konfigurasi. Variabel didukung dalam pekerjaan SQL, penerapan JAR/Python, konfigurasi logging, dan pengaturan UI. Topik ini menjelaskan cara membuat dan menggunakan variabel dalam berbagai skenario.
Informasi latar belakang
Variabel terdiri dari nama dan nilai. Nama, yang Anda definisikan, berfungsi sebagai placeholder untuk data aktual dan biasanya mencerminkan maknanya. Nilai adalah data aktual yang diwakili oleh nama tersebut. Flink mendukung dua jenis variabel: variabel deployment dan variabel namespace. Perbedaannya sebagai berikut:
-
Variabel deployment: Hanya dapat digunakan dalam satu deployment saja, misalnya dalam pekerjaan ETL SQL atau sebagai argumen fungsi utama dalam deployment JAR/Python. Format untuk mereferensikan variabel deployment adalah
${variable_name}. Untuk informasi lebih lanjut, lihat Deployment variables. -
Variabel namespace: Dapat digunakan di seluruh namespace. Ini mencakup penggunaan dalam Development (untuk ingesti data, ETL, dan skrip kueri), sebagai argumen fungsi utama dalam deployment JAR/Python, dalam konfigurasi parameter deployment, konfigurasi logging, dan pengaturan UI (seperti membuat Catalog). Format untuk mereferensikan variabel namespace adalah
${secret_values.variable_name}. Untuk mempelajari cara membuat dan menggunakannya, lihat Namespace variables.
Catatan penggunaan
-
Anda tidak dapat mengonfigurasi beberapa nilai untuk satu nama variabel.
-
Hindari penggunaan kata kunci sebagai nama variabel.
-
Dalam pekerjaan SQL, Anda hanya dapat menggunakan variabel dalam tabel temporary (CREATE TEMPORARY TABLE). Penggunaan variabel dalam tabel persisten (CREATE TABLE) menyebabkan tabel tidak berfungsi dengan baik.
Deployment variables
Nama variabel deployment harus unik dalam satu deployment.
ETL (SQL job)
Anda dapat menggunakan variabel selama pengembangan pekerjaan SQL, termasuk sebagai argumen untuk fungsi kustom. Anda juga dapat mengubah nilai variabel saat memulai pekerjaan.
-
Di panel navigasi sebelah kiri Konsol Realtime Compute for Apache Flink, klik .
-
Di editor SQL untuk pekerjaan SQL target Anda, buat variabel menggunakan format
${variable_name}, seperti pada contoh berikut.-
Saat digunakan sebagai parameter dalam klausa WITH, sertakan variabel dalam tanda kutip tunggal:
'${variable_name}'. -
Saat digunakan di lokasi lain (misalnya untuk nama tabel atau field SQL), sertakan variabel dalam backtick:
`${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 secara otomatis mengenali variabel deployment yang menggunakan format ini dalam pekerjaan SQL. Anda harus memberikan nilai untuk variabel-variabel tersebut.
-
Metode 1: Panel Job Variables muncul di editor SQL. Masukkan nilai-nilai tersebut di panel ini.
Di panel Job Variables, konfigurasikan pasangan kunci-nilai:
source_name=datagen,test_name=name, danblackhole=blackhole. -
Metode 2: Klik More Configurations di sisi kanan. Masukkan nilai-nilai tersebut di bagian Job Variables.
Misalnya, konfigurasikan variabel
source_namesebagaidatagen,test_namesebagainame, danblackholesebagaiblackhole. Anda kemudian dapat mereferensikan nilai-nilai ini dalam kode SQL Anda dengan menggunakan sintaks${variable_name}.
-
-
Setelah pekerjaan diterapkan, Anda dapat melihat variabelnya di tab Deployment Details pada halaman detail pekerjaan di bawah Deployments.
Di properti pekerjaan, baris Job Variables menampilkan variabel yang dikonfigurasi (seperti source_name, test_name, dan blackhole) beserta nilai-nilainya.
-
Klik Start di kolom Actions untuk pekerjaan target. Anda dapat mengubah nilai variabel di panel startup pekerjaan.
PentingPerubahan yang dilakukan pada nilai variabel di panel startup pekerjaan hanya berlaku untuk eksekusi pekerjaan saat ini. Perubahan tersebut tidak mengubah nilai yang ditetapkan dalam pekerjaan SQL.
Di panel startup pekerjaan, Anda dapat memilih mode stateless start atau stateful start. Jika Anda memilih stateful start, Anda dapat mengonfigurasi opsi pemulihan, seperti Recover from latest state. Bagian Job Variables menampilkan variabel dan nilai default-nya, seperti
source_namediatur kedatagen,test_namekename, danblackholekeblackhole. Anda dapat mengubahnya sesuai kebutuhan lalu klik Start.
JAR/Python deployment
Anda dapat menggunakan variabel sebagai argumen untuk fungsi utama dalam deployment JAR/Python.
Metode 1: Gunakan variabel namespace
-
Buat variabel baru. Untuk detailnya, lihat Create a variable.
-
Di Konsol Realtime Compute for Apache Flink, navigasikan ke lalu klik Deploy Job.
-
Di field Entry Point Main Arguments, masukkan argumen menggunakan format
--variable_in_code ${secret_values.variable_in_management}.Jika nama variabel perlu menyertakan karakter khusus, lihat How do I pass special characters as parameters when I use Entry Point Main Arguments?.
Misalnya, masukkan
--akid ${secret_values.test1}dan--aksecret ${secret_values.test2}, dengan setiap parameter pada baris baru.Untuk detail parameter deployment lainnya, lihat Deploy a job.
-
Klik Deploy.
-
Klik Start di kolom Actions untuk deployment target.
Metode 2: Gunakan variabel deployment
-
Di Konsol Realtime Compute for Apache Flink, navigasikan ke lalu klik Deploy Job.
-
Di field Entry Point Main Arguments, masukkan argumen menggunakan format
--variable_in_code ${deployment_variable_name}, lalu berikan nilai variabel di bagian Job Variables di bawahnya.Jika nama variabel perlu menyertakan karakter khusus, lihat How do I pass special characters as parameters when I use Entry Point Main Arguments?.
Misalnya, masukkan
--akid ${test1} --aksecret ${test2}, lalu tambahkan variabeltest1(AccessKey ID) dantest2(AccessKey Secret) serta masukkan kredensial aktual sebagai nilai default-nya.Untuk detail parameter deployment lainnya, lihat Deploy a job.
-
Klik Deploy.
-
Klik Start di kolom Actions untuk deployment target. Anda dapat mengubah nilai variabel di panel startup pekerjaan.
Pilih mode start: stateless start (tanpa status awal) atau stateful start (dari status yang ada). Anda juga dapat mengaktifkan Configuration Autotuning.
Namespace variables
Buat variabel
Hanya anggota dengan izin editor atau lebih tinggi, atau anggota dengan izin khusus untuk membuat variabel, yang dapat membuat variabel.
-
Login ke Konsol Realtime Compute for Apache Flink. Temukan ruang kerja target dan klik Console di kolom Actions.
-
Di panel navigasi sebelah kiri, klik , lalu klik Add Variable.
Parameter
Deskripsi
Variable Name
Nama variabel harus unik dalam namespace dan tidak dapat diubah setelah dibuat.
Variable Value
Nilai variabel bersifat case-sensitive. Nilai dapat diubah setelah pembuatan. Untuk detailnya, lihat Edit or delete a variable.
Type (Plaintext/Ciphertext)
Tipe tidak dapat diubah setelah pembuatan.
-
Plaintext: Nilai variabel langsung terlihat di halaman Variables.
-
Ciphertext: Nilai variabel disembunyikan.
Setelah variabel dibuat, Anda dapat melihat nama, tipe, nilai, dan waktu pembuatannya dalam daftar di halaman Variables. Anda juga dapat Edit atau Delete variabel tersebut.
-
-
Klik OK.
Gunakan variabel
Setelah membuat variabel, Anda dapat mereferensikannya menggunakan format ${secret_values.variable_name}. Ganti "variable_name" dengan nama variabel Anda.
Development
Anda dapat menggunakan variabel namespace di bagian Development Konsol Realtime Compute for Apache Flink.
ETL (SQL)
Anda dapat menggunakan variabel dalam DDL pekerjaan SQL dengan mereferensikannya menggunakan format ${secret_values.variable_name}, seperti pada contoh berikut.
-
Saat digunakan sebagai parameter dalam klausa WITH, sertakan variabel dalam tanda kutip tunggal:
'${secret_values.variable_name}'. -
Saat digunakan di lokasi lain (misalnya untuk nama tabel atau field SQL), sertakan variabel dalam backtick:
`${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}`;
Data ingestion
source:
type: mysql
name: Mysql Source
hostname: localhost
port: 3306
username: test
password: ${secret_values.mysqlpw}
tables: app_db.\.*
server-id: 5400-5404
···
Data query
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 deployment
Anda dapat menggunakan variabel sebagai argumen untuk fungsi utama dalam deployment JAR/Python.
-
Di konsol pengembangan, navigasikan ke lalu klik Deploy Job.
-
Di field Entry Point Main Arguments, masukkan argumen menggunakan format berikut.
Contoh:
--input ${secret_values.input}, di mana${secret_values.variable_name}adalah sintaks untuk mereferensikan variabel.Untuk detail parameter deployment lainnya, lihat Deploy a job.
-
Klik Deploy.
Konfigurasi parameter waktu proses
Anda dapat menggunakan variabel dalam parameter waktu proses pekerjaan.
-
Navigasikan ke halaman lalu klik pekerjaan target.
-
Di tab Deployment Details, klik Edit di pojok kanan atas bagian Runtime Parameter Configuration dan konfigurasikan parameter-parameter tersebut. Anda dapat menggunakan variabel sebagai nilai parameter, seperti pada contoh berikut.
Di area teks Other Configurations, gunakan format
${secret_values.xxx}untuk mereferensikan variabel. Misalnya, untuk mengonfigurasi kredensial akses Jindo OSS, Anda dapat mengatur parameter sepertifs.oss.jindo.buckets,fs.oss.jindo.accessKeyId, danfs.oss.jindo.accessKeySecret. -
Klik Save.
Konfigurasi logging
-
Buka halaman konfigurasi logging.
-
Untuk mengonfigurasi logging untuk satu pekerjaan, lihat Configure a log output channel for a single job.
-
Untuk mengonfigurasi logging untuk semua pekerjaan dalam namespace, lihat Configure a default log output channel for all jobs in a namespace.
-
-
Gunakan variabel dalam konfigurasi logging.
Misalnya, saat mengonfigurasi log pekerjaan untuk dikirim ke SLS, Anda dapat menggunakan variabel untuk 'accessKeyId' dan 'accessKeySecret'. Untuk informasi lengkap tentang konfigurasi output log, lihat Configure job log output.
<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
Saat membuat Catalog melalui UI, Anda dapat menggunakan variabel dalam item konfigurasi.
-
Di panel navigasi sebelah kiri Konsol Realtime Compute for Apache Flink, klik Catalogs.
-
Gunakan variabel di halaman Create Catalog. Contoh berikut menunjukkan cara menggunakan variabel bernama
mysqlpassworduntuk parameter password dalam Catalog MySQL.Di field password, masukkan
${secret_values.mysqlpassword}untuk mereferensikan nilai rahasia tersebut.
Edit atau hapus variabel
Berhati-hatilah saat mengedit atau menghapus variabel. Tindakan ini dapat menyebabkan deployment yang mereferensikannya gagal atau mengharuskan Anda menerapkan ulang pekerjaan online. Pekerjaan yang sedang berjalan tidak terpengaruh.
-
Login ke Konsol Realtime Compute for Apache Flink. Temukan ruang kerja target dan klik Console di kolom Actions.
-
Di panel navigasi sebelah kiri, klik . Temukan variabel target dan klik Edit atau Delete di kolom Actions.
-
Edit
Anda dapat mengubah nilai variabel. Hanya anggota dengan izin editor atau lebih tinggi yang dapat mengedit variabel.
-
Delete
Hanya anggota dengan izin editor atau lebih tinggi, atau anggota dengan izin khusus untuk menghapus variabel, yang dapat menghapus variabel.
-
Dokumen terkait
-
Untuk mempelajari cara mengembangkan pekerjaan SQL, lihat Job development overview.
-
Untuk informasi tentang parameter deployment untuk deployment JAR/Python, lihat Deploy a job.
-
Untuk mempelajari cara membuat dan menggunakan Catalog, lihat Manage data.
-
Untuk detail konektor yang didukung, lihat Supported connectors.