Todos os produtos
Search
Central de documentação

Realtime Compute for Apache Flink:Configuração de parâmetros (VVR 11+)

Última atualização: Aug 21, 2026

Este tópico lista os parâmetros WITH do Ververica Runtime (VVR) versão 11 e posteriores.

Descontinuação de parâmetros

Para aprimorar a arquitetura e a manutenção do sistema, alguns parâmetros legados do VVR 8 e versões anteriores foram descontinuados. As tabelas a seguir listam esses parâmetros e seus substitutos.

Parâmetros removidos

Parâmetro

Descrição

Observações

jdbcRetrySleepInitMs

Tempo de espera fixo para cada nova tentativa.

Utilize um tempo de espera incremental: retry-sleep-step-ms.

jdbcMetaAutoRefreshFactor

Atualiza automaticamente o cache quando seu tempo de vida restante fica abaixo de um limiar especificado.

Basta configure o parâmetro de tempo de cache meta-cache-ttl-ms. Não é necessário configure este parâmetro.

type-mapping.timestamp-converting.legacy

Define se deve haver conversão de tipos de tempo entre Flink e Hologres.

Introduzido para compatibilidade com versões anteriores do tipo TIMESTAMP_LTZ, não é mais necessário.

property-version

Versão dos parâmetros do conector.

Removido porque os valores padrão dos parâmetros comuns foram otimizados.

field_delimiter

Delimitador usado entre linhas durante a exportação de dados.

Removido devido à otimização do método de leitura de dados.

jdbcBinlogSlotName

Nome do slot da tabela de origem Binlog no modo JDBC.

Removido devido à otimização do método de leitura de dados.

binlogMaxRetryTimes

Número de novas tentativas de leitura de dados Binlog após um erro.

Use o parâmetro retry-count para configurá-lo.

cdcMode

Define se o modo CDC deve ser usado para ler dados Binlog.

Por padrão, os dados são lidos no modo CDC e este parâmetro foi removido. Para o modo não-CDC, use o parâmetro source.binlog.change-log-mode.

upsertSource

Define se a tabela de origem usa um Changelog upsert.

Configure o parâmetro source.binlog.change-log-mode.

bulkload

Define se o bulkload deve ser usado para escrita.

Utilize o parâmetro sink.write-mode.

useRpcMode

Define se o conector Hologres deve ser usado via RPC.

Recomendamos usar uma conexão JDBC e configure o parâmetro sink.deduplication.enabled para ative ou desative a deduplicação.

partitionrouter

Define se a escrita deve ocorrer em uma tabela particionada.

Removido porque a escrita em tabelas particionadas agora é suportada por padrão.

ignoredelete

Define se as mensagens de retração devem ser ignoradas.

Configure o parâmetro sink.delete-strategy. Este parâmetro especifique a estratégia de processamento para mensagens de retração.

sdkMode

Especifique o modo SDK para leitura ou escrita de dados.

Este parâmetro foi otimizado. Configure-o com base no tipo de tabela e nos parâmetros source.binlog.read-mode e sink.write-mode.

jdbcReadBatchQueueSize

Tamanho da fila de buffer para solicitações de consulta de tabela de dimensão.

Quando o desempenho da consulta pontual for baixo, recomendamos configure o parâmetro connection.pool.size.

jdbcReadRetryCount

Número de novas tentativas quando uma consulta de tabela de dimensão atinge o tempo limite.

O parâmetro retry-count do mecanismo geral de novas tentativas foi consolidado.

jdbcScanTransactionSessionTimeoutSeconds

Tempo limite de transação para uma operação de varredura.

A configuração geral de tempo limite de varredura foi consolidada no parâmetro source.scan.timeout-seconds.

Parâmetros renomeados

Parâmetro antigo

Novo parâmetro

Descrição

jdbcRetryCount

retry-count

Número de novas tentativas para operações de escrita e consulta após falha de conexão.

jdbcRetrySleepStepMs

retry-sleep-step-ms

Tempo de espera incremental para cada nova tentativa.

jdbcConnectionMaxIdleMs

connection.max-idle-ms

Tempo máximo de ociosidade para uma conexão JDBC.

jdbcMetaCacheTTL

meta-cache-ttl-ms

Tempo de vida (TTL) das informações de esquema de tabela armazenadas em cache localmente.

binlog

source.binlog

Define se os dados Binlog devem ser consumidos.

sdkMode

source.binlog.read-mode

Especifique o modo de leitura.

binlogRetryIntervalMs

source.binlog.request-timeout-ms

Intervalo de espera entre novas tentativas quando uma leitura Binlog falha.

binlogBatchReadSize

source.binlog.batch-size

Número de linhas a serem lidas em lote do Binlog.

binlogStartupMode

source.binlog.startup-mode

Modo de consumo para dados Binlog.

jdbcScanFetchSize

source.scan.fetch-size

Tamanho do lote para busca de dados durante uma varredura.

jdbcScanTimeoutSeconds

source.scan.timeout-seconds

Tempo limite para operações de varredura.

enable_filter_push_down

source.scan.filter-push-down.enabled

Define se o pushdown de filtro deve ser ativado durante a fase de leitura completa.

partition-binlog.mode

source.binlog.partition-binlog-mode

Modo de consumo de Binlog de uma tabela particionada.

partition-binlog-lateness-timeout-minutes

source.binlog.partition-binlog-lateness-timeout-minutes

Tempo limite máximo de atraso ao consumir de uma tabela particionada no modo DYNAMIC.

partition-values-to-read

source.binlog.partition-values-to-read

Partições a serem lidas ao consumir de uma tabela particionada no modo STATIC. Separe vários valores de partição com vírgula (,).

sdkMode

sink.write-mode

Especifique o modo de escrita.

mutatetype

sink.on-conflict-action

Estratégia de tratamento para conflito de chave primária.

createparttable

sink.create-missing-partition

Ao escrever em uma tabela particionada, define se as partições ausentes devem ser criadas automaticamente com base nos valores de partição.

jdbcWriteBatchSize

sink.insert.batch-size

Número máximo de registros para lotes no sink Hologres.

jdbcWriteBatchByteSize

sink.insert.batch-byte-size

Tamanho máximo em bytes para lotes no sink Hologres.

jdbcWriteFlushInterval

sink.insert.flush-interval-ms

Tempo máximo de espera antes que um lote de dados seja liberado para o Hologres.

ignoreNullWhenUpdate

sink.ignore-null-when-update.enabled

Quando sink.on-conflict-action está definido como uma ação de atualização, define se valores nulos nos dados gravados devem ser ignorados.

jdbcEnableDefaultForNotNullColumn

sink.default-for-not-null-column.enabled

Define se o conector fornece um valor padrão quando null é escrito em uma coluna NOT NULL sem padrão definido.

remove-u0000-in-text.enabled

sink.remove-u0000-in-text.enabled

Define se o conector remove automaticamente o caractere ilegal \u0000 dos dados de string antes da escrita.

partial-insert.enabled

sink.partial-insert.enabled

Define se apenas os campos definidos na instrução INSERT devem ser inseridos.

deduplication.enabled

sink.deduplication.enabled

Define se a deduplicação deve ser realizada durante o processo de lote de escrita.

check-and-put.column

sink.insert.check-and-put.column

Ativa atualizações condicionais e especifique a coluna a ser verificada.

check-and-put.operator

sink.insert.check-and-put.operator

Operador de comparação para a operação de atualização condicional.

check-and-put.null-as

sink.insert.check-and-put.null-as

Em uma atualização condicional, se os dados existentes forem nulos, o valor nulo será tratado como o valor especificado por este parâmetro.

aggressive.enabled

sink.aggressive-flush.enabled

Define se o modo de liberação agressiva deve ser ativado.

connectionSize

connection.pool.size

Tamanho do pool de conexões JDBC para uma única tarefa de tabela de dimensão Flink.

connectionPoolName

connection.pool.name

Nome do pool de conexões. Dentro do mesmo TaskManager, tabelas que especifique o mesmo nome de pool podem compartilhar um pool de conexões.

jdbcReadBatchSize

lookup.read.batch-size

Número máximo de registros a serem agrupados em lote para consultas de tabela de dimensão.

jdbcReadTimeoutMs

lookup.read.timeout-ms

Tempo limite para consultas de tabela de dimensão.

Parâmetros WITH

Geral

Parâmetro

Descrição

Tipo

Obrigatório

Padrão

Observações

connector

Tipo da tabela.

String

Sim

O valor deve ser hologres.

dbname

Nome do banco de dados.

String

Sim

É possível conectar-se a um warehouse virtual específico adicionando um sufixo ao nome do banco de dados. Por exemplo, para conectar uma tabela de dimensão ao warehouse virtual read_warehouse, especifique 'dbname' = 'db_test@read_warehouse'.

tablename

Nome da tabela.

String

Sim

Se o esquema não for public, use o formato schema.tableName.

username

  • Nome de usuário de uma conta personalizada, no formato BASIC$<user_name>.

  • AccessKey ID de uma conta Alibaba Cloud ou usuário RAM.

String

Sim

Importante

Para evitar que suas informações de AccessKey sejam expostas, recomendamos usar variáveis de namespace para armazenar seus valores de AccessKey. Para obter mais informações, consulte Namespace variables.

password

  • Senha da conta personalizada.

  • AccessKey secret de uma conta Alibaba Cloud ou usuário RAM.

String

Sim

endpoint

Endpoint do service Hologres.

String

Sim

Para obter mais informações, consulte Endpoints.

connection.pool.size

Tamanho do pool de conexões JDBC criado para uma única tabela Flink dentro de uma tarefa.

Integer

Não

5

Se o desempenho do job for insuficiente, considere aumentar o tamanho do pool de conexões. O tamanho do pool é proporcional ao throughput de dados. Este parâmetro afeta apenas tabelas de dimensão e tabelas sink.

connection.pool.name

Tabelas no mesmo TaskManager podem compartilhar um pool de conexões usando o mesmo nome.

String

Não

'default'

O valor padrão é 'default'. Se várias tabelas estiverem configuradas para usar o mesmo pool de conexões, o maior valor especificado para o parâmetro connection.pool.size entre elas será utilizado.

Por exemplo, se um job contiver cinco tabelas Hologres (tabelas de dimensão A e B, e tabelas sink C, D e E), você pode configure as tabelas A e B para usar pool1, as tabelas C e D para usar pool2, e a tabela E, que lida com alto tráfego, para usar pool3.

Nota
  • As tabelas só podem compartilhar um pool de conexões se usarem as mesmas informações de conexão, como endpoint e banco de dados.

  • Se um job envolver muitas tabelas, o número de conexões disponíveis pode ser insuficiente, o que pode degradar o desempenho. Nesses casos, recomendamos atribuir nomes de pool diferentes para tabelas diferentes.

connection.fixed.enabled

Define se o modo de conexão leve deve ser usado.

Boolean

Não

O Hologres possui um connection limit. A partir do Hologres V2.1, escritas em tempo real suportam conexões leves que não estão sujeitas a esse limite.

Nota
  • O valor padrão deste parâmetro depende da versão da sua instância Hologres. Para tabelas de dimensão e tabelas sink, o conector selecione automaticamente o modo de conexão leve para versões do Hologres posteriores a 3.0.28.

  • Para tabelas de dimensão, o modo de conexão leve não suporta consultas nos tipos de dados JSONB e RoaringBitmap.

connection.max-idle-ms

Tempo limite de ociosidade para uma conexão JDBC, em milissegundos.

Long

Não

60000

Se uma conexão permanecer ociosa por mais tempo que este valor, ela será fechada. Uma nova conexão é criada automaticamente quando necessário.

connection.ssl.mode

Define se a criptografia Secure Sockets Layer (SSL) em trânsito deve ser ativada e qual modo usar.

String

Não

disable

  • disable (padrão): Desativa a criptografia em trânsito.

  • require: Ativa SSL e criptografa apenas o link de dados.

  • verify-ca: Ativa SSL, criptografa o link de dados e usa um certificado CA para verifique a autenticidade do servidor Hologres.

  • verify-full: Ativa SSL, criptografa o link de dados, usa um certificado CA para verifique a autenticidade do servidor Hologres e verifique se o Common Name (CN) ou nome DNS no certificado corresponde ao endpoint Hologres configurado.

Nota
  • Hologres V2.1 e posteriores suportam os modos verify-ca e verify-full. Para obter mais informações, consulte Encryption in transit.

  • Se você defina este parâmetro como verify-ca ou verify-full, também deverá defina o parâmetro connection.ssl.root-cert.location.

connection.ssl.root-cert.location

Caminho para o certificado CA, necessário para modos de criptografia baseados em certificado.

String

Não

Se connection.ssl.mode estiver definido como verify-ca ou verify-full, você deve especifique o caminho para o certificado CA. É possível fazer upload do arquivo de certificado usando o recurso Manage artifacts no console Realtime Compute. Após o upload, o arquivo é armazenado no diretório /flink/usrlib. Por exemplo, se o arquivo de certificado CA for chamado certificate.crt, defina este parâmetro como '/flink/usrlib/certificate.crt'.

Nota

Para obter informações sobre como adquirir um certificado CA, consulte Download the CA certificate.

retry-count

Número de vezes para tentar novamente uma operação de escrita ou consulta em caso de falha de conexão.

Integer

Não

10

retry-sleep-step-ms

Tempo de espera incremental para cada nova tentativa, em milissegundos.

Long

Não

5000

Por exemplo, com o valor padrão de 5.000 (5 segundos), a primeira nova tentativa aguarda 5 segundos, a segunda aguarda 10 segundos e assim por diante.

meta-cache-ttl-ms

Tempo de vida (TTL) das informações de TableSchema armazenadas em cache localmente, em milissegundos.

Long

Não

600000

Unidade: milissegundos.

serverless-computing.enabled

Define se recursos serverless devem ser usados.

Boolean

Não

false

Se este parâmetro estiver definido como true, o conector usa recursos serverless do Hologres para operações de leitura e escrita em vez dos recursos da sua instância Hologres. Este parâmetro é suportado apenas para leituras em lote e importações em lote. Ele não é válido para consumo de log binário, consultas pontuais de tabela de dimensão ou escritas em tempo real. Para obter mais informações, consulte Overview.

Nota
  • Leituras em lote aplicam-se quando source.binlog está definido como false, ou durante a fase de leitura completa de dados quando source.binlog.startup-mode está definido como INITIAL.

  • Operações de importação em lote aplicam-se quando sink.write-mode está definido como COPY_BULK_LOAD ou COPY_BULK_LOAD_ON_CONFLICT.

Nota

Recomendamos ative este parâmetro para importações ou exportações de dados em grande escala para evitar impacto em outras consultas na sua instância Hologres. Para obter mais informações, consulte Overview.

Parâmetros de tabela de origem

Parâmetro

Descrição

Tipo

Obrigatório

Padrão

Observações

source.binlog

Define se os dados binlog devem ser consumidos.

Boolean

Não

true

  • true (padrão): Consome dados binlog.

  • false: Não consome dados binlog. O job realiza uma leitura em lote e depois para.

source.binlog.read-mode

Especifique o modo de leitura.

ENUM

Não

AUTO

  • AUTO (padrão): Selecione automaticamente o modo ideal com base na versão da instância.

  • HOLOHUB: Usa o modo HoloHub para consumir dados binlog.

  • JDBC: Usa o modo JDBC para consumir dados binlog.

Nota

A lógica de seleção para o modo AUTO é a seguinte:

  • Para instâncias Hologres V2.1.27 e posteriores, o conector selecione o modo JDBC e a conexão leve é ativada por padrão (o parâmetro connection.fixed.enabled tem como padrão true).

  • Para instâncias Hologres de V2.1.0 a V2.1.26, o conector selecione o modo JDBC.

  • Para instâncias Hologres V2.0 e anteriores, o conector selecione o modo HOLOHUB.

source.binlog.change-log-mode

Especifique os tipos de ChangeLog suportados pela tabela de origem CDC.

ENUM

Não

UPSERT

  • ALL: Suporta todos os tipos de ChangeLog, incluindo INSERT, DELETE, UPDATE_BEFORE e UPDATE_AFTER.

  • UPSERT (padrão): Suporta apenas ChangeLogs upsert, incluindo INSERT, DELETE e UPDATE_AFTER.

  • ALL_AS_APPEND_ONLY: Trata todos os tipos de ChangeLog como INSERT.

Nota

Se o pipeline downstream incluir um operador de retração (por exemplo, usando ROW_NUMBER OVER WINDOW para deduplicação), você deve defina upsertSource como true. Nesse caso, a tabela de origem lê dados do Hologres no modo upsert.

source.binlog.startup-mode

Especifique o modo de consumo para dados binlog.

ENUM

Não

INITIAL

  • INITIAL (padrão): Realiza uma leitura completa dos dados e, em seguida, inicia o consumo incremental a partir do binlog.

  • EARLIEST_OFFSET: Inicia o consumo a partir do offset binlog mais antigo disponível.

  • TIMESTAMP: Inicia o consumo a partir do binlog no startTime especificado.

  • LATEST_OFFSET: Inicia o consumo a partir do offset binlog mais recente.

Nota
  • Se startTime estiver definido ou uma hora de início for selecionada na interface de inicialização, este parâmetro será automaticamente definido para o modo TIMESTAMP, e outros modos de consumo serão ignorados. O parâmetro startTime tem precedência.

  • O modo LATEST_OFFSET é suportado apenas no VVR 11.6 e posteriores.

source.binlog.batch-size

Especifique o número de linhas a serem lidas por lote do binlog.

Integer

Não

512

Não aplicável.

source.binlog.request-timeout-ms

Especifique o tempo limite para leitura de dados binlog.

Long

Não

300000

Unidade: milissegundos.

Nota

Um tempo limite pode indicar contrapressão causada por operadores downstream processando dados da tabela de origem muito lentamente.

source.binlog.project-columns.enabled

Define se apenas os campos especificados na tabela do usuário devem ser lidos ao ler dados binlog.

Boolean

Não

Nenhum

Os campos especificados são aqueles declarados na instrução CREATE TEMPORARY TABLE; campos não declarados não são lidos. Quando uma tabela tem muitos campos, mas você precisa consumir apenas um subconjunto, esta opção pode evitar transferência e conversão desnecessárias de dados, o que melhora o desempenho de leitura e economiza largura de banda.

Nota

Este parâmetro é suportado apenas no VVR 11.3 e posteriores e em instâncias Hologres V3.2 e posteriores. Geralmente não é necessário configure este parâmetro. O conector o ativa por padrão se os requisitos de versão forem atendidos.

source.binlog.compression.enabled

Define se a compactação de dados em trânsito deve ser ativada ao ler dados binlog.

Boolean

Não

Nenhum

Ao consumir o binlog, o servidor retorna um fluxo de bytes compactado com o algoritmo LZ4. Isso melhora o desempenho de leitura e reduz o uso de largura de banda.

Nota

Este parâmetro é suportado apenas no VVR 11.3 e posteriores e em instâncias Hologres V3.2 e posteriores. Geralmente não é necessário configure este parâmetro. O conector o ativa por padrão se os requisitos de versão forem atendidos.

source.binlog.partition-binlog-mode

Especifique o modo de consumo de binlog para uma tabela particionada.

Enum

Não

DISABLE

  • DISABLE (padrão): Use para tabelas de origem não particionadas. O job lança uma exceção se a tabela Hologres especificada for uma tabela particionada.

  • DYNAMIC: Consome continuamente as partições mais recentes de uma tabela particionada. A tabela deve ter dynamic partitioning ativado. O modo DYNAMIC consome partições em ordem cronológica. Quando o consumo atinge a penúltima partição, ele começa a consumir a partição mais recente quando uma nova unidade de tempo se inicia.

  • STATIC: Consome um conjunto fixo de partições de uma tabela particionada. Várias partições podem ser consumidas simultaneamente. Partições não podem ser adicionadas ou removidas durante o consumo. Por padrão, consome todas as partições da tabela pai.

source.binlog.partition-binlog-lateness-timeout-minutes

No modo DYNAMIC, especifique o tempo limite máximo de atraso ao consumir uma tabela particionada.

Integer

Não

60

  • Unidade: minutos. No modo DYNAMIC, quando uma nova unidade de tempo se inicia, o conector começa a consumir a partição mais recente para o horário atual. No entanto, ele não fecha imediatamente a partição anterior, mas continua a monitorá-la para capturar dados que chegam com atraso.

Por exemplo, se o particionamento dinâmico for por DIA, para a partição 20240920, e o atraso máximo de dados for de 1 hora, o consumo para esta partição para às 2024-09-21 01:00:00, e não às 2024-09-21 00:00:00.

  • O valor de lateness-timeout não pode exceder a unidade de tempo da partição.

Se o particionamento for por dia, o valor máximo é 24 * 60 = 1440 minutos. No modo DYNAMIC, o conector geralmente consome apenas uma partição por vez, mas pode consumir duas partições simultaneamente durante o período de atraso.

source.binlog.partition-values-to-read

No modo STATIC, especifique as partições a serem consumidas. Use vírgulas (,) para separar os valores de partição.

String

Não

Nenhum

  • Se você não configure este parâmetro, o modo STATIC consome todas as partições da tabela pai especificada. Se configurado, consome apenas as partições especificadas.

  • Especifique apenas os valores de partição, não os nomes completos das partições. Separe vários valores com vírgulas (,). Este parâmetro não suporta expressões regulares.

startTime

Especifique a hora de início para o offset de consumo.

String

Não

Nenhum

Formato: yyyy-MM-dd hh:mm:ss. Se este parâmetro não estiver definido e o job não estiver retomando de um estado salvo, o consumo começa a partir do binlog mais antigo.

source.scan.fetch-size

Especifique o tamanho do lote para leituras em lote.

Integer

Não

512

Não aplicável.

source.scan.timeout-seconds

Especifique o tempo limite para leituras em lote.

Integer

Não

60

Unidade: segundos.

source.scan.filter-push-down.enabled

Define se filtros devem ser enviados (push down) durante uma leitura em lote.

Boolean

Não

false

  • false (padrão): Não envia filtros.

  • true: Envia condições de filtro suportadas para o Hologres durante uma leitura em lote.

Nota
  • Este parâmetro não pode ser ativado ao mesmo tempo que o parâmetro source.binlog.filter-push-down.enabled.

  • Este parâmetro entra em vigor em dois cenários:

    • Se source.binlog estiver definido como false, uma leitura em lote é realizada e o pushdown de filtro é ativado.

    • Definir source.binlog como true e source.binlog.startup-mode como INITIAL habilita a leitura completa e incremental de dados, e o pushdown de filtro entra em vigor durante a fase de leitura completa de dados.

source.binlog.filter-push-down.enabled

Define se filtros devem ser enviados (push down) durante o consumo de binlog.

Boolean

Não

false

  • false (padrão): Não envia filtros.

  • true: Envia condições de filtro suportadas para o Hologres durante o consumo de binlog.

Nota
  • Este parâmetro é suportado apenas para VVR 11.3 ou posterior e instâncias Hologres versão 4,0 ou posterior. Este parâmetro não pode ser ativado ao mesmo tempo que o parâmetro source.scan.filter-push-down.enabled.

  • Quando source.binlog está definido como true, o pushdown de filtro é ativado. Por exemplo, quando source.binlog.startup-mode está definido como INITIAL, o pushdown de filtro é eficaz tanto para as fases completa quanto incremental.

scan.prefer.physical-column.over.metadata-column

Define se a leitura de dados de uma coluna física deve ter prioridade quando ela compartilha o mesmo nome que uma coluna de metadados.

Boolean

Não

false

Este parâmetro é suportado apenas no VVR 11.5 e posteriores. Versões anteriores sempre priorizam a leitura de dados da coluna de metadados.

Parâmetros de tabela sink

Parâmetro

Descrição

Tipo

Obrigatório

Padrão

Observações

sink.write-mode

Modo de escrita de dados.

ENUM

Não

INSERT

  • INSERT: Padrão. Usa JDBC para escrever dados com instruções INSERT.

  • COPY_STREAM: Usa o método de streaming COPY fixo, uma opção de alto desempenho para cenários que exigem alto throughput e baixa latência. Este modo não suporta exclusão de dados, escrita em uma tabela pai particionada ou uso do parâmetro sink.ignore-null-when-update.enabled.

  • COPY_BULK_LOAD: Realiza escritas em massa usando o protocolo COPY. COPY_BULK_LOAD atualmente aplica-se apenas a tabelas sem chave primária (uma exceção é lançada se houver duplicação de chave primária). Comparado ao COPY_STREAM, este modo usa menos recursos do Hologres para escritas.

  • COPY_BULK_LOAD_ON_CONFLICT: Usa o protocolo COPY para escritas em lote e suporta escrita em tabelas com chave primária e tratamento de conflitos de chave primária.

Nota
  • O modo COPY_BULK_LOAD_ON_CONFLICT é suportado apenas no VVR 11.3 e posteriores e requer Hologres V3.1 ou posterior. O modo funciona reorganizando (reshuffling) os dados no lado Flink com base na DistributionKey da tabela sink Hologres. Isso garante que os dados do mesmo shard sejam escritos pela mesma tarefa Flink, o que reduz o escopo de bloqueio de tabela do nível de tabela para o nível de shard para importações em lote e permite escritas concorrentes em shards diferentes. Portanto, defina a concorrência do job para corresponder ao shard count da tabela sink Hologres.

  • Nos modos COPY_BULK_LOAD e COPY_BULK_LOAD_ON_CONFLICT, os dados tornam-se visíveis somente após o sucesso de um checkpoint. Esses modos são adequados para cenários onde a visibilidade imediata dos dados não é necessária ou para importações em lote de dados históricos.

  • No modo COPY_STREAM, os valores de funções de tempo como CURRENT_TIMESTAMP e NOW() são fixos quando a conexão COPY é estabelecida e não são atualizados para cada registro. Se uma coluna da tabela Hologres usar essas funções como valor padrão (por exemplo, DEFAULT CURRENT_TIMESTAMP), o valor da coluna refletirá o horário de estabelecimento da conexão, e não o horário real de escrita do registro. Para obter horários de escrita precisos, você deve especifique explicitamente o valor de timestamp no seu job Flink em vez de confiar no valor padrão no Hologres.

sink.on-conflict-action

Política para tratar conflitos de chave primária.

ENUM

Não

INSERT_OR_UPDATE

  • INSERT_OR_IGNORE: Mantém o primeiro registro e ignora todos os registros subsequentes com a mesma chave primária.

  • INSERT_OR_REPLACE: Substitui toda a linha existente pela nova linha.

  • INSERT_OR_UPDATE: Padrão. Atualiza um subconjunto de colunas em uma linha existente.

    Por exemplo, considere uma tabela com as colunas a, b, c e d, onde a é a chave primária. Se um registro recebido fornecer valores apenas para as colunas a e b, um conflito de chave primária fará com que o sistema atualize apenas a coluna b e deixe as colunas c e d inalteradas.

sink.create-missing-partition

Define se uma partição deve ser criada automaticamente com base no valor de partição se uma correspondente não existir ao escrever em uma tabela particionada.

Boolean

Não

false

  • Se você usar o tipo de dados DATE como chave de partição e ative dynamic partitioning, os nomes das partições criadas automaticamente seguem a convenção de nomenclatura de particionamento dinâmico.

  • Use este parâmetro com cautela. Certifique-se de que os valores de partição não contenham dados incorretos. Caso contrário, você poderá crie partições incorretas, o que pode levar a um failover.

  • Se sink.write-mode não for INSERT, você não poderá escrever em uma tabela pai particionada.

sink.delete-strategy

Política para tratar mensagens de retração.

String

Não

CHANGELOG_STANDARD

  • IGNORE_DELETE: Ignora mensagens UPDATE_BEFORE e DELETE. Esta opção é adequada para cenários que requerem apenas inserções ou atualizações, mas não exclusões.

  • NON_PK_FIELD_TO_NULL: Ignora mensagens UPDATE_BEFORE e processa mensagens DELETE definindo campos que não são de chave primária como NULL. Esta opção é adequada para cenários de atualização parcial onde você deseja realizar uma exclusão sem afetar outras colunas.

  • DELETE_ROW_ON_PK: Ignora mensagens UPDATE_BEFORE e processa mensagens DELETE excluindo toda a linha com base na chave primária. Esta opção é adequada para cenários de atualização parcial onde você deseja exclua toda a linha.

  • CHANGELOG_STANDARD: Segue o mecanismo padrão de changelog do Flink SQL. Não ignora operações de exclusão. Esta opção realiza atualizações excluindo primeiro o registro antigo e depois inserindo o novo, o que garante a precisão dos dados. Esta opção é adequada para cenários que não envolvem atualizações parciais.

Nota

Ative a opção NON_PK_FIELD_TO_NULL pode resultar em registros onde apenas a coluna de chave primária tem um valor e todas as outras colunas são nulas.

sink.ignore-null-when-update.enabled

Quando sink.on-conflict-action é 'INSERT_OR_UPDATE', define se valores nulos nos dados recebidos devem ser ignorados durante uma atualização.

Boolean

Não

false

  • false: Padrão. Escreve valores nulos na tabela sink Hologres.

  • true: Ignora valores nulos nos dados de atualização recebidos.

Nota

Este parâmetro é suportado apenas quando sink.write-mode está definido como INSERT.

sink.ignore-null-when-update-by-expr.enabled

Quando sink.on-conflict-action é 'INSERT_OR_UPDATE', define se um método baseado em expressão deve ser usado para ignorar valores nulos nos dados de atualização recebidos.

Boolean

Não

false

Este método oferece melhor desempenho do que sink.ignore-null-when-update.enabled.

  • false: Padrão.

    • Se sink.ignore-null-when-update.enabled for true, valores nulos nas atualizações são ignorados.

    • Se sink.ignore-null-when-update.enabled for false, valores nulos são escritos na tabela sink Hologres.

  • true: Ignora valores nulos nos dados de atualização recebidos, independentemente da configuração de sink.ignore-null-when-update.enabled.

Nota
  • Este parâmetro é suportado apenas quando sink.write-mode está definido como INSERT.

  • Requer Hologres V4.0 ou posterior.

sink.ignore-null-when-update.use-builtin.enabled

Define se o método integrado do SDK Hologres deve ser usado quando sink.ignore-null-when-update.enabled ou sink.ignore-null-when-update-by-expr.enabled estiver ativado.

Boolean

Não

false

  • false (padrão): Comporta-se da mesma forma que sink.ignore-null-when-update.enabled ou sink.ignore-null-when-update-by-expr.enabled.

  • true: Quando sink.ignore-null-when-update-by-expr.enabled está ativado, o desempenho é melhor do que ative apenas sink.ignore-null-when-update-by-expr.enabled.

O desempenho é equivalente quando sink.ignore-null-when-update.enabled está ativado.

Nota
  • Este parâmetro é suportado apenas quando sink.write-mode está definido como INSERT.

  • Requer Hologres V4.0 ou posterior.

  • Suportado apenas no VVR 11.8 e posteriores.

sink.default-for-not-null-column.enabled

Define se o conector fornece um valor padrão quando null é escrito em uma coluna NOT NULL que não possui um valor padrão definido.

Boolean

Não

true

  • true: Padrão. Permite que o conector forneça e escreva um valor padrão com base nas seguintes regras:

    • Para um tipo de dados String, uma string vazia ("") é escrita.

    • Para um tipo de dados Number, 0 é escrito.

    • Para tipos de dados Date, timestamp ou timestamptz, 1970-01-01 00:00:00 é escrito.

  • false: Não fornece um valor padrão. Escrever um valor nulo em uma coluna NOT NULL lança uma exceção.

Nota

Este parâmetro é suportado apenas quando sink.write-mode está definido como INSERT, e sink.on-conflict-action está definido como uma opção diferente de INSERT_OR_UPDATE.

sink.remove-u0000-in-text.enabled

Define se o conector remove o caractere ilegal \u0000 de tipos string durante uma operação de escrita.

Boolean

Não

true

  • false: O conector não modifique os dados. Se dados incorretos forem encontrados, uma operação de escrita pode lançar um erro semelhante ao seguinte: ERROR: invalid byte sequence for encoding "UTF8": 0x00

    Nesse caso, você deve processar os dados incorretos na tabela de origem ou defina a lógica para tratar dados incorretos na sua instrução SQL.

  • true: Padrão. O conector remove o caractere \u0000 de tipos string para evitar erros de escrita.

sink.partial-insert.enabled

Define se apenas os campos definidos na instrução INSERT devem ser inseridos ou atualizados.

Boolean

Não

false

  • false: Padrão. Todos os campos definidos no DDL da tabela sink são atualizados. Campos que não são declarados na instrução INSERT são atualizados para null.

  • true: Envia apenas os campos definidos na instrução INSERT para o conector, o que permite atualize ou insira apenas os campos declarados.

Nota
  • Este parâmetro só entra em vigor quando o parâmetro sink.on-conflict-action está definido como INSERT_OR_UPDATE.

sink.deduplication.enabled

Define se a deduplicação deve ser realizada durante o agrupamento em lotes.

Boolean

Não

true

  • true: Padrão. Se um lote contiver vários registros com a mesma chave primária, o conector os deduplica e escreve apenas o último registro na tabela sink Hologres. Considere uma tabela com dois campos, onde o primeiro é a chave primária:

    • Se os registros INSERT (1,'a') e INSERT (1,'b') chegarem em sequência, apenas o último registro, (1,'b'), será escrito na tabela sink Hologres após a deduplicação.

    • Se a tabela sink Hologres já contiver o registro (1,'a'), e os registros DELETE (1,'a') e INSERT (1,'b') chegarem em sequência, apenas o último registro (1,'b') será escrito no Hologres. Isso resulta em uma atualização direta em vez de uma exclusão seguida de uma inserção.

  • false: Desativa a deduplicação durante o agrupamento em lotes. Se um novo registro tiver a mesma chave primária que um registro no lote atual, o lote é primeiro escrito no sink e, em seguida, o novo registro é processado.

Nota
  • Este parâmetro é suportado apenas quando sink.write-mode está definido como INSERT.

  • Se a deduplicação estiver desativada, as operações de escrita podem degradar para escritas de linha única em casos extremos, como quando todos os registros têm a mesma chave primária. Isso pode degradar o desempenho.

sink.aggressive-flush.enabled

Define se o modo de liberação agressiva deve ser ativado.

Boolean

Não

false

Se definido como true, o conector força a liberação de um lote quando a conexão está ociosa, mesmo que o lote não tenha atingido seu tamanho configurado. Isso reduz a latência de escrita de dados durante períodos de baixo tráfego.

Nota

Este parâmetro é suportado apenas quando sink.write-mode está definido como INSERT ou COPY_STREAM.

sink.insert.check-and-put.column

Ativa atualizações condicionais e especifique a coluna a ser verificada.

String

Não

Nenhum

O valor deste parâmetro deve ser um nome de coluna existente na tabela Hologres.

Importante
  • Este parâmetro é suportado apenas quando sink.write-mode está definido como INSERT.

  • A tabela sink deve ter uma chave primária, e o parâmetro sink.on-conflict-action deve ser INSERT_OR_UPDATE ou INSERT_OR_REPLACE.

  • Como uma consulta reversa é necessária, crie a tabela sink como uma tabela orientada a linhas ou uma tabela híbrida linha-coluna para melhor desempenho.

  • Se muitos registros compartilharem a mesma chave primária, as operações check-and-put podem degradar para escritas de linha única, o que reduz o desempenho de escrita.

sink.insert.check-and-put.operator

Operador de comparação para a operação de atualização condicional.

String

Não

GREATER

Compara a coluna de verificação do registro recebido com o valor existente na tabela. A atualização prossegue se a condição for atendida. Os operadores suportados são: GREATER, GREATER_OR_EQUAL, EQUAL, NOT_EQUAL, LESS, LESS_OR_EQUAL, IS_NULL e IS_NOT_NULL.

sink.insert.check-and-put.null-as

Durante uma atualização condicional, trata um valor nulo nos dados existentes como o valor especificado por este parâmetro.

String

Não

Nenhum

No PostgreSQL, qualquer comparação com NULL retorna FALSE. Portanto, quando o valor existente na tabela for NULL, você deve defina este parâmetro com um valor específico a ser usado na comparação. Isso equivale à função COALESCE em SQL.

sink.insert.batch-size

No modo INSERT, o número máximo de registros a serem incluídos em um lote antes da escrita.

Integer

Não

512

O conector aciona uma escrita quando qualquer um dos limiares sink.insert.batch-size, sink.insert.batch-byte-size ou sink.insert.flush-interval-ms é atingido.

sink.insert.batch-byte-size

No modo INSERT, o tamanho máximo em bytes de um lote antes da escrita.

Long

Não

2097152 (2 MB)

sink.insert.flush-interval-ms

No modo INSERT, o intervalo máximo em milissegundos a aguardar antes que um lote seja liberado para o Hologres.

Long

Não

10000

sink.copy.format

Formato de transmissão de dados usado no modo COPY.

String

Não

  • O modo COPY_STREAM tem como padrão binary.

  • O modo COPY_BULK_LOAD ou COPY_BULK_LOAD_ON_CONFLICT tem como padrão text.

Formatos suportados para o modo COPY_STREAM:

  • binary

  • text

  • binaryrow (Requer mecanismo Hologres V4.1.0 ou posterior)

Formato suportado para o modo COPY_BULK_LOAD ou COPY_BULK_LOAD_ON_CONFLICT: apenas text

Nota

Este parâmetro é suportado apenas quando sink.write-mode está definido como COPY_STREAM, COPY_BULK_LOAD ou COPY_BULK_LOAD_ON_CONFLICT.

sink.insert.conflict-update-set

Expressão Hologres usada para atualize a linha quando ocorre um conflito de chave primária.

String

Não

Nenhum

Equivalente a insert into tbl values(xxx) on conflict(pk) do update set <conflict-update-set>. Você pode especifique uma expressão ou função Hologres.

Por exemplo, se este parâmetro for definido como col1=old.col1+excluded.col1,col2=excluded.col2, um conflito de chave primária fará com que o valor de col1 seja atualizado para a soma dos valores antigo e novo, e o valor de col2 seja atualizado para o novo valor.

  • Se este parâmetro não for especificado, o conector atualize todos os campos recebidos para seus novos valores por padrão.

  • Para expressões com estado onde o resultado depende do valor antigo (por exemplo, col=old.col+excluded.col), certifique-se de que uma coluna possa servir como número de versão da linha e defina sink.insert.conflict-where como excluded.seq>old.seq. Isso garante a correção dos dados após um failover e recuperação.

Nota

Este parâmetro é suportado apenas quando sink.write-mode está definido como INSERT.

sink.insert.conflict-where

Condição de filtro Hologres para acionar uma atualização durante um conflito de chave primária.

String

Não

Nenhum

Equivalente a insert into tbl values(xxx) on conflict(pk) do update set <conflict-update-set> where <conflict-where>. Você pode especifique uma expressão ou função Hologres.

Por exemplo, se este parâmetro for definido como excluded.col1>old.col1, uma atualização será acionada apenas quando o novo valor de col1 for maior que o valor existente.

Nota
  • Este parâmetro é suportado apenas quando sink.write-mode está definido como INSERT.

  • Este parâmetro entra em conflito com os parâmetros sink.insert.check-and-put*. Configurá-los ao mesmo tempo causa um erro.

Parâmetros de tabela de dimensão

Parâmetro

Descrição

Tipo

Obrigatório

Padrão

Observações

lookup.read.batch-size

Número máximo de registros a serem agrupados em lote para consultas pontuais em uma tabela de dimensão Hologres.

Integer

Não

256

Nenhum

lookup.read.timeout-ms

Tempo limite para consultas pontuais em uma tabela de dimensão.

Long

Não

0, o que significa sem tempo limite.

Nenhum

lookup.read.column-table.enabled

Define se uma tabela orientada a colunas deve ser usada como tabela de dimensão.

Boolean

Não

false

Tabelas orientadas a colunas têm baixo desempenho para consultas pontuais. Recomendamos usar uma tabela orientada a linhas ou híbrida linha-coluna como tabela de dimensão. Um aviso é registrado se este parâmetro for ativado para uma tabela orientada a colunas.

lookup.insert-if-not-exists

Define se um registro deve ser inserido caso não exista.

Boolean

Não

false

Se uma consulta pontual não encontrar correspondência para o registro atual na tabela de dimensão, o conector insere o registro.

cache

Política de cache.

String

Não

Nenhum

O Hologres suporta apenas duas políticas de cache: None e LRU.

cacheSize

Tamanho do cache, em linhas.

Integer

Não

10000

Após selecione a política de cache LRU, você pode defina o tamanho do cache. A unidade é entradas.

cacheTTLMs

Tempo de vida (TTL) do cache, em milissegundos.

Long

Não

Ver Observações.

A unidade é milissegundos. O valor padrão de cacheTTLMs depende da configuração do cache:

  • Se o cache estiver configurado como LRU, cacheTTLMs especifique o tempo limite do cache. A configuração padrão é sem expiração.

  • Se o cache estiver configurado como None, cacheTTLMs pode ser omitido, o que indica que o cache não expira.

cacheEmpty

Define se resultados de junção vazios devem ser armazenados em cache.

Boolean

Não

true

  • true (Padrão): Armazena resultados de junção vazios em cache.

  • false: Não armazena resultados de junção vazios em cache.

    No entanto, se a condição antes de AND em uma instrução de junção for atendida, mas a condição após AND não for, o resultado vazio ainda será armazenado em cache. O código a seguir fornece um exemplo.

    LEFT JOIN latest_emergency FOR SYSTEM_TIME AS OF PROCTIME() AS t2
     ON t1.alarm_id = t2.alarm_id -- If a dynamic alarm is detected, match it by using the dynamic alarm ID. Otherwise, ignore the dynamic alarm ID field.
     AND CASE
     WHEN alarm_type = 2 THEN t1.dynamic_id = t2.dynamic_alarm_id
     ELSE true
     END
Importante

Decida se deve ative esta opção com base no seu cenário de negócios real.

  • Para melhorar o desempenho e reduzir a pressão de I/O em tabelas de dimensão estáticas ou de mudança lenta, use o valor padrão (true).

  • Para tabelas de dimensão atualizadas frequentemente, defina este parâmetro como false ou use um valor curto para cacheTTLMs. Isso garante que entradas de cache vazias sejam removidas prontamente para evitar falhas de junção subsequentes.

async

Define se os resultados devem ser retornados de forma assíncrona.

Boolean

Não

false

  • true: Retorna resultados de forma assíncrona.

  • false (Padrão): Retorna resultados de forma síncrona.

Nota
  • Resultados assíncronos não são ordenados.

  • Consultas assíncronas para uma tabela de dimensão são controladas pelos parâmetros async e lookup.async. A consulta assíncrona é ativada se este parâmetro ou lookup.async for verdadeiro.

    O valor padrão de lookup.async é true. Portanto, a consulta assíncrona é ativada se async estiver definido como false.

    Para desativar consultas assíncronas, você deve defina ambos os parâmetros como false.

lookup.async

Define se consultas assíncronas para tabelas de dimensão devem ser ativadas.

Boolean

Não

true

  • true (Padrão): Ativa consultas assíncronas.

  • false: Desativa consultas assíncronas.

lookup.filter-push-down.enabled

Define se as condições de filtro da tabela de dimensão devem ser enviadas (push down) para o servidor Hologres.

Boolean

Não

false

Este recurso suporta apenas operações de comparação entre uma coluna e uma constante. O conector envia apenas operadores de igualdade (=) e comparação (<, <=, >, >=).

Nota

Este parâmetro é suportado apenas no Realtime Compute Engine VVR 11.4 e posteriores.