L'utilisation de variables permet d'éviter les risques de sécurité liés aux identifiants en texte clair, tels qu'une AccessKey ou un mot de passe. La réutilisation des variables évite également la duplication du code et des valeurs, ce qui simplifie la gestion de la configuration. Les variables sont prises en charge dans les jobs SQL, les déploiements JAR/Python, les configurations de journalisation et les paramètres de l'interface utilisateur. Cette rubrique explique comment créer des variables et les utiliser dans différents scénarios.
Informations générales
Une variable se compose d'un nom et d'une valeur. Le nom, que vous définissez, sert d'espace réservé pour les données réelles et reflète généralement leur signification. La valeur correspond aux données réelles représentées par le nom. Flink prend en charge deux types de variables : les variables de déploiement et les variables de namespace. Voici leurs différences :
Variable de déploiement : utilisable uniquement au sein d'un seul déploiement, par exemple dans un job ETL SQL ou comme argument de fonction principale dans un déploiement JAR/Python. Le format de référence d'une variable de déploiement est ${variable_name}. Pour plus d'informations, consultez la section Variables de déploiement.
Variable de namespace : utilisable dans l'ensemble d'un namespace. Cela inclut son utilisation dans le développement (pour l'ingestion de données, les scripts ETL et les requêtes), comme arguments de fonction principale dans les déploiements JAR/Python, dans les configurations de paramètres de déploiement, les configurations de journalisation et les paramètres de l'interface utilisateur (comme la création d'un Catalog). Le format de référence d'une variable de namespace est ${secret_values.variable_name}. Pour savoir comment les créer et les utiliser, consultez la section Variables de namespace.
Remarques sur l'utilisation
Vous ne pouvez pas configurer plusieurs valeurs pour un même nom de variable.
Évitez d'utiliser des mots-clés comme noms de variables.
Dans les jobs SQL, vous ne pouvez utiliser des variables que dans une table temporaire (CREATE TEMPORARY TABLE). L'utilisation d'une variable dans une table persistante (CREATE TABLE) entraîne un dysfonctionnement de la table.
Variables de déploiement
Les noms des variables de déploiement doivent être uniques au sein d'un même déploiement.
ETL (job SQL)
Vous pouvez utiliser des variables lors du développement de jobs SQL, y compris comme arguments pour des fonctions personnalisées. Vous pouvez également modifier les valeurs des variables au démarrage du job.
Dans le volet de navigation de gauche de la console Realtime Compute for Apache Flink, cliquez sur .
-
Dans l'éditeur SQL de votre job SQL cible, créez des variables en utilisant le format ${variable_name}, comme illustré dans l'exemple suivant.
Lorsqu'elle est utilisée comme paramètre dans une clause WITH, entourez la variable de guillemets simples : '${variable_name}'.
Lorsqu'elle est utilisée ailleurs (par exemple pour les noms de tables ou de champs SQL), entourez la variable d'accents graves :
${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 identifie automatiquement les variables de déploiement utilisant ce format dans le job SQL. Vous devez fournir des valeurs pour ces variables.
-
Méthode 1 : Le panneau Job Variables s'affiche dans l'éditeur SQL. Saisissez les valeurs dans ce panneau.
Dans le panneau Job Variables, configurez les paires clé-valeur :
source_name=datagen,test_name=nameetblackhole=blackhole. -
Méthode 2 : Cliquez sur More Configurations à droite. Saisissez les valeurs dans la section Job Variables.
Par exemple, configurez la variable
source_nameavec la valeurdatagen,test_nameavecnameetblackholeavecblackhole. Vous pouvez ensuite référencer ces valeurs dans votre code SQL en utilisant la syntaxe${variable_name}.
-
-
Une fois le job déployé, vous pouvez consulter ses variables dans l'onglet Deployment Details de la page des détails du job, sous Deployments.
Dans les propriétés du job, la ligne Job Variables affiche les variables configurées (telles que source_name, test_name et blackhole) ainsi que leurs valeurs correspondantes.
-
Cliquez sur Start dans la colonne Actions pour le job cible. Vous pouvez modifier les valeurs des variables dans le panneau de démarrage du job.
ImportantLes modifications apportées aux valeurs des variables dans le panneau de démarrage du job s'appliquent uniquement à l'exécution actuelle du job. Elles ne modifient pas les valeurs définies dans le job SQL.
Dans le panneau de démarrage du job, vous pouvez sélectionner le mode stateless start ou stateful start. Si vous sélectionnez stateful start, vous pouvez configurer les options de récupération, telles que Recover from latest state. La section Job Variables affiche les variables et leurs valeurs par défaut, par exemple
source_namedéfini surdatagen,test_namesurnameetblackholesurblackhole. Modifiez-les si nécessaire, puis cliquez sur Start.
Déploiement JAR/Python
Vous pouvez utiliser des variables comme arguments pour la fonction principale dans les déploiements JAR/Python.
Méthode 1 : Utiliser des variables de namespace
Créez une nouvelle variable. Pour plus de détails, consultez la section Créer une variable.
Dans la console Realtime Compute for Apache Flink, accédez à et cliquez sur Deploy Job.
-
Dans le champ Entry Point Main Arguments, saisissez l'argument en utilisant le format
--variable_in_code ${secret_values.variable_in_management}.Si un nom de variable doit inclure des caractères spéciaux, consultez la section Comment transmettre des caractères spéciaux en tant que paramètres lors de l'utilisation des Entry Point Main Arguments ?.
Par exemple, saisissez
--akid ${secret_values.test1}et--aksecret ${secret_values.test2}, chaque paramètre sur une nouvelle ligne.Pour plus de détails sur les autres paramètres de déploiement, consultez la section Déployer un job.
Cliquez sur Deploy.
Cliquez sur Start dans la colonne Actions pour le déploiement cible.
Méthode 2 : Utiliser des variables de déploiement
Dans la console Realtime Compute for Apache Flink, accédez à et cliquez sur Deploy Job.
-
Dans le champ Entry Point Main Arguments, saisissez l'argument en utilisant le format
--variable_in_code ${deployment_variable_name}, puis fournissez la valeur de la variable dans la section Job Variables ci-dessous.Si un nom de variable doit inclure des caractères spéciaux, consultez la section Comment transmettre des caractères spéciaux en tant que paramètres lors de l'utilisation des Entry Point Main Arguments ?.
Par exemple, saisissez
--akid ${test1} --aksecret ${test2}, puis ajoutez les variablestest1(AccessKey ID) ettest2(AccessKey Secret) et saisissez les informations d'identification réelles comme valeurs par défaut.Pour plus de détails sur les autres paramètres de déploiement, consultez la section Déployer un job.
Cliquez sur Deploy.
-
Cliquez sur Start dans la colonne Actions pour le déploiement cible. Vous pouvez modifier les valeurs des variables dans le panneau de démarrage du job.
Sélectionnez un mode de démarrage : stateless start (sans état initial) ou stateful start (à partir d'un état existant). Vous pouvez également activer Configuration Autotuning.
Variables de namespace
Créer une variable
Seuls les membres disposant d'autorisations d'édition ou supérieures, ou des membres ayant l'autorisation spécifique de créer des variables, peuvent créer des variables.
Connectez-vous à la console Realtime Compute for Apache Flink. Recherchez l'espace de travail cible et cliquez sur Console dans la colonne Actions.
-
Dans le volet de navigation de gauche, cliquez sur , puis cliquez sur Add Variable.
Paramètre
Description
Nom de la variable
Le nom de la variable doit être unique au sein du namespace et ne peut pas être modifié après la création.
Valeur de la variable
Les valeurs des variables sont sensibles à la casse. La valeur peut être modifiée après la création. Pour plus de détails, consultez la section Modifier ou supprimer une variable.
Type (Texte clair/Chiffrement)
Le type ne peut pas être modifié après la création.
-
Texte clair : la valeur de la variable est directement visible sur la page Variables.
-
Chiffrement : la valeur de la variable est masquée.
Après la création de la variable, vous pouvez afficher son nom, son type, sa valeur et l'heure de création dans la liste de la page Variables. Vous pouvez également Edit ou Delete la variable.
-
Cliquez sur OK.
Utiliser une variable
Après avoir créé une variable, vous pouvez la référencer en utilisant le format ${secret_values.variable_name}. Remplacez « variable_name » par le nom de votre variable.
Développement
Vous pouvez utiliser des variables de namespace dans la section Development de la console Realtime Compute for Apache Flink.
ETL (SQL)
Vous pouvez utiliser des variables dans le DDL d'un job SQL en les référençant avec le format ${secret_values.variable_name}, comme illustré dans l'exemple suivant.
Lorsqu'elle est utilisée comme paramètre dans une clause WITH, entourez la variable de guillemets simples : '${secret_values.variable_name}'.
Lorsqu'elle est utilisée ailleurs (par exemple pour les noms de tables ou de champs SQL), entourez la variable d'accents graves :
${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}`;
Ingestion de données
source:
type: mysql
name: Mysql Source
hostname: localhost
port: 3306
username: test
password: ${secret_values.mysqlpw}
tables: app_db.\.*
server-id: 5400-5404
···
Requête de données
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;
Déploiement JAR/Python
Vous pouvez utiliser des variables comme arguments pour la fonction principale dans les déploiements JAR/Python.
Dans la console de développement, accédez à et cliquez sur Deploy Job.
-
Dans le champ Entry Point Main Arguments, saisissez l'argument en utilisant le format suivant.
Exemple :
--input ${secret_values.input}, où${secret_values.variable_name}est la syntaxe pour référencer une variable.Pour plus de détails sur les autres paramètres de déploiement, consultez la section Déployer un job.
Cliquez sur Deploy.
Configuration des paramètres d'exécution
Vous pouvez utiliser des variables dans les paramètres d'exécution des jobs.
Accédez à la page et cliquez sur le job cible.
-
Dans l'onglet Deployment Details, cliquez sur Edit dans le coin supérieur droit de la section Runtime Parameter Configuration et configurez les paramètres. Vous pouvez utiliser des variables comme valeurs de paramètres, comme illustré dans l'exemple suivant.
Dans la zone de texte Other Configurations, utilisez le format
${secret_values.xxx}pour référencer les variables. Par exemple, pour configurer les informations d'identification d'accès Jindo OSS, vous pouvez définir des paramètres tels quefs.oss.jindo.buckets,fs.oss.jindo.accessKeyIdetfs.oss.jindo.accessKeySecret. Cliquez sur Save.
Configuration de la journalisation
-
Accédez à la page de configuration de la journalisation.
Pour configurer la journalisation d'un seul job, consultez la section Configurer un canal de sortie de journal pour un seul job.
Pour configurer la journalisation de tous les jobs d'un namespace, consultez la section Configurer un canal de sortie de journal par défaut pour tous les jobs d'un namespace.
-
Utilisez des variables dans la configuration de la journalisation.
Par exemple, lors de la configuration de l'envoi des journaux de job vers SLS, vous pouvez utiliser des variables pour 'accessKeyId' et 'accessKeySecret'. Pour obtenir des informations complètes sur la configuration de la sortie des journaux, consultez la section Configurer la sortie des journaux de job.
<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>
Interface utilisateur
Lors de la création d'un Catalog via l'interface utilisateur, vous pouvez utiliser des variables dans les éléments de configuration.
Dans le volet de navigation de gauche de la console Realtime Compute for Apache Flink, cliquez sur Catalogs.
-
Utilisez des variables sur la page de création de Catalog. L'exemple suivant montre comment utiliser une variable nommée
mysqlpasswordpour le paramètre de mot de passe dans un Catalog MySQL.Dans le champ password, saisissez
${secret_values.mysqlpassword}pour référencer la valeur secrète.
Modifier ou supprimer une variable
Soyez prudent lorsque vous modifiez ou supprimez des variables. Cette action peut entraîner l'échec des déploiements qui les référencent ou vous obliger à redéployer des jobs en ligne. Les jobs en cours d'exécution ne sont pas affectés.
Connectez-vous à la console Realtime Compute for Apache Flink. Recherchez l'espace de travail cible et cliquez sur Console dans la colonne Actions.
-
Dans le volet de navigation de gauche, cliquez sur . Recherchez la variable cible et cliquez sur Edit ou Delete dans la colonne Actions.
-
Modifier
Vous pouvez modifier la valeur d'une variable. Seuls les membres disposant d'autorisations d'édition ou supérieures peuvent modifier des variables.
-
Supprimer
Seuls les membres disposant d'autorisations d'édition ou supérieures, ou des membres ayant l'autorisation spécifique de supprimer des variables, peuvent supprimer des variables.
-
Documents connexes
Pour apprendre à développer un job SQL, consultez la section Aperçu du développement de jobs.
Pour plus d'informations sur les paramètres de déploiement pour les déploiements JAR/Python, consultez la section Déployer un job.
Pour apprendre à créer et utiliser des Catalogs, consultez la section Gérer les données.
Pour plus de détails sur les connecteurs pris en charge, consultez la section Connecteurs pris en charge.