O uso de variáveis ajuda a evitar riscos de segurança associados a credenciais em texto simples, como AccessKey ou senhas. A reutilização de variáveis também evita a repetição de código e valores, simplificando o gerenciamento de configurações. Há suporte para variáveis em jobs SQL, implantações JAR/Python, configurações de log e definições da interface. Este tópico descreve como criar variáveis e utilizá-las em diferentes cenários.
Informações básicas
Uma variável é composta por um nome e um valor. O nome, definido por você, atua como um espaço reservado para os dados reais e geralmente reflete seu significado. O valor corresponde aos dados reais que o nome representa. O Flink oferece suporte a dois tipos de variáveis: variáveis de implantação e variáveis de namespace. As diferenças são as seguintes:
Variável de implantação: Uso restrito a uma única implantação, como em um job SQL de ETL ou como argumento da função principal em uma implantação JAR/Python. O formato para referenciar uma variável de implantação é ${variable_name}. Para mais informações, consulte Deployment variables.
Variável de namespace: Aplicável em todo um namespace. Isso inclui o uso em Development (para scripts de ingestão de dados, ETL e consultas), como argumentos da função principal em implantações JAR/Python, em configurações de parâmetros de implantação, configurações de log e definições da interface (como na criação de um Catalog). O formato para referenciar uma variável de namespace é ${secret_values.variable_name}. Para saber como criá-las e usá-las, consulte Namespace variables.
Observações de uso
Não configure vários valores para um único nome de variável.
Evite utilizar palavras-chave como nomes de variáveis.
Em jobs SQL, use variáveis apenas em tabelas temporárias (CREATE TEMPORARY TABLE). O uso de variáveis em tabelas persistentes (CREATE TABLE) causa mau funcionamento da tabela.
Variáveis de implantação
Os nomes das variáveis de implantação devem ser exclusivos dentro de uma única implantação.
ETL (job SQL)
Use variáveis durante o desenvolvimento de jobs SQL, inclusive como argumentos para funções personalizadas. Também modifique os valores das variáveis ao iniciar o job.
No painel de navegação à esquerda do console do Realtime Compute for Apache Flink, clique em .
-
No editor SQL do job desejado, crie variáveis usando o formato ${variable_name}, conforme o exemplo a seguir.
Ao usar como parâmetro em uma cláusula WITH, coloque a variável entre aspas simples: '${variable_name}'.
Em outros locais (como nomes de tabelas ou campos SQL), coloque a variável entre crases:
${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}`; -
O Flink identifica automaticamente as variáveis de implantação que utilizam esse formato no job SQL. Forneça valores para essas variáveis.
-
Método 1: O painel Job Variables aparece no editor SQL. Insira os valores nesse painel.
No painel Job Variables, configure os pares chave-valor:
source_name=datagen,test_name=nameeblackhole=blackhole. -
Método 2: Clique em More Configurations no lado direito. Insira os valores na seção Job Variables.
Por exemplo, configure a variável
source_namecomodatagen,test_namecomonameeblackholecomoblackhole. Em seguida, referencie esses valores no código SQL usando a sintaxe${variable_name}.
-
-
Após a implantação do job, visualize suas variáveis na aba Deployment Details da página de detalhes do job, em Deployments.
Nas propriedades do job, a linha Job Variables exibe as variáveis configuradas (como source_name, test_name e blackhole) e seus valores correspondentes.
-
Clique em Start na coluna Actions do job desejado. Modifique os valores das variáveis no painel de inicialização do job.
ImportanteAs alterações nos valores das variáveis feitas no painel de inicialização do job aplicam-se apenas à execução atual. Elas não alteram os valores definidos no job SQL.
No painel de inicialização do job, selecione o modo stateless start ou stateful start. Se escolher a inicialização com estado, configure as opções de recuperação, como Recover from latest state. A seção Job Variables exibe as variáveis e seus valores padrão, como
source_namedefinido comodatagen,test_namecomonameeblackholecomoblackhole. Modifique-os conforme necessário e clique em Start.
Implantação JAR/Python
Use variáveis como argumentos para a função principal em implantações JAR/Python.
Método 1: Usar variáveis de namespace
Crie uma nova variável. Para detalhes, consulte Create a variable.
No console do Realtime Compute for Apache Flink, acesse e clique em Deploy Job.
-
No campo Entry Point Main Arguments, insira o argumento usando o formato
--variable_in_code ${secret_values.variable_in_management}.Caso o nome da variável precise incluir caracteres especiais, consulte How do I pass special characters as parameters when I use Entry Point Main Arguments?.
Por exemplo, insira
--akid ${secret_values.test1}e--aksecret ${secret_values.test2}, com cada parâmetro em uma nova linha.Para detalhes sobre outros parâmetros de implantação, consulte Deploy a job.
Clique em Deploy.
Clique em Start na coluna Actions da implantação desejada.
Método 2: Usar variáveis de implantação
No console do Realtime Compute for Apache Flink, acesse e clique em Deploy Job.
-
No campo Entry Point Main Arguments, insira o argumento usando o formato
--variable_in_code ${deployment_variable_name}e forneça o valor da variável na seção Job Variables abaixo.Caso o nome da variável precise incluir caracteres especiais, consulte How do I pass special characters as parameters when I use Entry Point Main Arguments?.
Por exemplo, insira
--akid ${test1} --aksecret ${test2}, adicione as variáveistest1(AccessKey ID) etest2(AccessKey Secret) e insira as credenciais reais como seus valores padrão.Para detalhes sobre outros parâmetros de implantação, consulte Deploy a job.
Clique em Deploy.
-
Clique em Start na coluna Actions da implantação desejada. Modifique os valores das variáveis no painel de inicialização do job.
Selecione um modo de início: stateless start (sem estado inicial) ou stateful start (a partir de um estado existente). Também ative o Configuration Autotuning.
Variáveis de namespace
Criar uma variável
Apenas membros com permissões de editor ou superiores, ou membros com permissão específica para criar variáveis, podem criar variáveis.
Faça login no console do Realtime Compute for Apache Flink. Localize o workspace desejado e clique em Console na coluna Actions.
-
No painel de navegação à esquerda, clique em e clique em Add Variable.
Parâmetro
Descrição
Variable Name
O nome da variável deve ser exclusivo dentro do namespace e não pode ser alterado após a criação.
Variable Value
Os valores das variáveis diferenciam maiúsculas de minúsculas. O valor pode ser modificado após a criação. Para detalhes, consulte Edit or delete a variable.
Type (Plaintext/Ciphertext)
O tipo não pode ser alterado após a criação.
-
Plaintext: O valor da variável fica diretamente visível na página Variables.
-
Ciphertext: O valor da variável permanece oculto.
Após a criação da variável, visualize seu nome, tipo, valor e hora de criação na lista da página Variables. Também edite (Edit) ou exclua (Delete) a variável.
-
Clique em OK.
Usar uma variável
Após criar uma variável, referencie-a usando o formato ${secret_values.variable_name}. Substitua "variable_name" pelo nome da sua variável.
Desenvolvimento
Use variáveis de namespace na seção Development do console do Realtime Compute for Apache Flink.
ETL (SQL)
Utilize variáveis no DDL de um job SQL referenciando-as com o formato ${secret_values.variable_name}, conforme o exemplo a seguir.
Ao usar como parâmetro em uma cláusula WITH, coloque a variável entre aspas simples: '${secret_values.variable_name}'.
Em outros locais (como nomes de tabelas ou campos SQL), coloque a variável entre crases:
${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}`;
Ingestão de dados
source:
type: mysql
name: Mysql Source
hostname: localhost
port: 3306
username: test
password: ${secret_values.mysqlpw}
tables: app_db.\.*
server-id: 5400-5404
···
Consulta de dados
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;
Implantação JAR/Python
Use variáveis como argumentos para a função principal em implantações JAR/Python.
No console de desenvolvimento, acesse e clique em Deploy Job.
-
No campo Entry Point Main Arguments, insira o argumento usando o seguinte formato.
Exemplo:
--input ${secret_values.input}, onde${secret_values.variable_name}é a sintaxe para referenciar uma variável.Para detalhes sobre outros parâmetros de implantação, consulte Deploy a job.
Clique em Deploy.
Configuração de parâmetros de tempo de execução
Use variáveis nos parâmetros de tempo de execução do job.
Acesse a página e clique no job desejado.
-
Na aba Deployment Details, clique em Edit no canto superior direito da seção Runtime Parameter Configuration e configure os parâmetros. Utilize variáveis como valores de parâmetro, conforme o exemplo a seguir.
Na área de texto Other Configurations, use o formato
${secret_values.xxx}para referenciar variáveis. Por exemplo, para configurar credenciais de acesso ao Jindo OSS, defina parâmetros comofs.oss.jindo.buckets,fs.oss.jindo.accessKeyIdefs.oss.jindo.accessKeySecret. Clique em Save.
Configuração de log
-
Acesse a página de configuração de log.
Para configurar o log de um único job, consulte Configure a log output channel for a single job.
Para configurar o log de todos os jobs em um namespace, consulte Configure a default log output channel for all jobs in a namespace.
-
Utilize variáveis na configuração de log.
Por exemplo, ao configurar logs de job para envio ao SLS, use variáveis para 'accessKeyId' e 'accessKeySecret'. Para informações completas sobre a configuração de saída de log, consulte 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>
Interface
Ao criar um Catalog pela interface, utilize variáveis nos itens de configuração.
No painel de navegação à esquerda do console do Realtime Compute for Apache Flink, clique em Catalogs.
-
Use variáveis na página Create Catalog. O exemplo a seguir mostra como usar uma variável chamada
mysqlpasswordpara o parâmetro de senha em um Catalog MySQL.No campo password, insira
${secret_values.mysqlpassword}para referenciar o valor secreto.
Editar ou excluir uma variável
Tenha cautela ao editar ou excluir variáveis. Essa ação pode fazer com que implantações que as referenciam falhem ou exigir a reimplantação de jobs online. Jobs em execução não são afetados.
Faça login no console do Realtime Compute for Apache Flink. Localize o workspace desejado e clique em Console na coluna Actions.
-
No painel de navegação à esquerda, clique em . Localize a variável desejada e clique em Edit ou Delete na coluna Actions.
-
Editar
Altere o valor de uma variável. Apenas membros com permissões de editor ou superiores podem editar variáveis.
-
Excluir
Apenas membros com permissões de editor ou superiores, ou membros com permissão específica para excluir variáveis, podem excluir variáveis.
-
Documentos relacionados
Para saber como desenvolver um job SQL, consulte Job development overview.
Para informações sobre parâmetros de implantação em implantações JAR/Python, consulte Deploy a job.
Para aprender a criar e usar Catalogs, consulte Manage data.
Para detalhes sobre conectores suportados, consulte Supported connectors.