Todos os produtos
Search
Central de documentação

Realtime Compute for Apache Flink:Conector Faker

Última atualização: Jun 27, 2026

Este tópico descreve como usar o conector Faker para gerar dados de teste.

Informações básicas

O conector Faker é nativo do Realtime Compute for Apache Flink e gera dados de teste com base nas expressões Java Faker fornecidas para cada campo da tabela. Use este conector para crie dados de teste e validar a lógica de negócios durante o desenvolvimento ou os testes.

A tabela a seguir descreve as capacidades do conector Faker.

Item

Detalhes

Tipos de tabela suportados

Tabela source e tabela de dimensão

Modo de execução

Modo em lote e modo streaming

Formato de dados

Não aplicável

Métricas específicas do conector

Nenhuma

Tipo de API

SQL

Suporte para atualização ou exclusão de dados em uma tabela sink

Não aplicável

Pré-requisitos

Nenhum

Limites

  • O conector Faker tem suporte apenas no Realtime Compute for Apache Flink VVR 4.0.12 ou posterior.

  • Este conector aceita somente os seguintes tipos de dados: CHAR(n), VARCHAR(n), STRING, TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL, BOOLEAN, TIMESTAMP, ARRAY, MAP, MULTISET e ROW.

  • Quando usado como tabela de dimensão em uma operação JOIN, o conector Faker não executa uma consulta real à tabela de dimensão. Em vez disso, gera um resultado diretamente com base na chave de consulta transmitida pela tabela source.

Sintaxe

CREATE TABLE faker_source (
  `name` STRING,
  `age` INT
) WITH (
  'connector' = 'faker',
  'fields.name.expression' = '#{superhero.name}',
  'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}'
);

Parâmetros WITH

Tipo

Parâmetro

Descrição

Tipo

Obrigatório

Padrão

Observações

Geral

connector

Especifica o tipo de conector.

String

Sim

Nenhum

O valor deve ser faker.

fields.<field>.expression

Defina a expressão Java Faker para gerar valores deste campo.

String

Sim

Nenhum

Para mais informações, consulte Expressões de campo.

fields.<field>.null-rate

Indica a probabilidade de o valor do campo ser nulo.

Float

Não

0.0

Nenhum

fields.<field>.length

Determina o tamanho da coleção para os tipos de dados ARRAY, MAP ou MULTISET.

Integer

Não

1

Nenhum

Específico da tabela source

number-of-rows

Defina a quantidade de linhas a gerar.

Integer

Não

-1

Se definido, limita a tabela source. Caso contrário, a tabela permanece ilimitada.

rows-per-second

Defina a taxa de geração de dados.

Integer

Não

10000

Nenhum

Exemplos

Exemplo de tabela de dimensão

CREATE TEMPORARY TABLE datagen_source (
  `character_id` INT,
  `location` STRING,
  `datagen_name` STRING,
  `user_fullname` ROW<first_name STRING, last_name STRING>,
  `user_data` ARRAY<STRING>,
  `user_score` Map<STRING, INT>,
  `user_books` MULTISET<STRING>,
  `proctime` AS PROCTIME()
) WITH (
  'connector' = 'faker',
  'fields.character_id.expression' = '#{number.numberBetween ''0'',''10000''}',
  'fields.location.expression' = '#{harry_potter.location}',
  'fields.datagen_name.expression' = '#{superhero.name}',
  'fields.user_fullname.first_name.expression' = '#{superhero.prefix}',
  'fields.user_fullname.last_name.expression' = '#{superhero.suffix}',
  'fields.user_data.expression' = '#{harry_potter.character}',
  'fields.user_data.length' = '2',
  'fields.user_score.key.expression' = '#{harry_potter.character}',
  'fields.user_score.value.expression' = '#{number.numberBetween ''10'',''100''}',
  'fields.user_score.length' = '2',
  'fields.user_books.expression' = '#{book.title}',
  'fields.user_books.length' = '2',
  'number-of-rows' = '5'
);

CREATE TEMPORARY TABLE faker_dim (
  `character_id` INT,
  `faker_name` STRING
) WITH (
  'connector' = 'faker',
  'fields.character_id.expression' = '#{number.numberBetween ''0'',''100''}',
  'fields.faker_name.expression' = '#{harry_potter.characters}'
);
    
SELECT
  l.character_id,
  l.location,
  l.datagen_name,
  l.user_fullname,
  l.user_data,
  l.user_score,
  l.user_books,
  c.faker_name
FROM datagen_source AS l
JOIN faker_dim FOR SYSTEM_TIME AS OF proctime AS c
ON l.character_id = c.character_id;

Expressões de campo

  • Formato

    Cada campo definido na instrução DDL exige uma expressão correspondente na cláusula WITH. A expressão deve seguir o formato 'fields.<field>.expression' = '#{className.methodName ''parameter'', ...}'. A tabela a seguir descreve os componentes desse formato.

    Parâmetro

    Descrição

    field

    Nome de um campo na instrução DDL.

    className

    Nome da classe Faker.

    O Java Faker oferece cerca de 80 classes Faker para gerar expressões de campo. Selecione uma classe conforme seus requisitos de negócio.

    Nota

    Os nomes das classes Faker não diferenciam maiúsculas de minúsculas.

    methodName

    Nome do método.

    Nota

    Os nomes dos métodos não diferenciam maiúsculas de minúsculas.

    parameter

    Parâmetros de entrada do método.

    Nota
    • Coloque os parâmetros de entrada do método entre duas aspas simples consecutivas ('') para escapá-los corretamente na string da expressão.

    • Use vírgula (,) para separar vários parâmetros.

  • Exemplo

    Os passos a seguir demonstram como construir uma expressão de campo. O exemplo usa a expressão do campo age: 'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}', apresentada na seção Sintaxe:

    1. Na documentação da API do Java Faker, localize a classe Number.

    2. Na classe Number, encontre o método numberBetween e leia sua descrição.

      Esse método retorna um valor dentro de um intervalo numérico especificado.

    3. Com base no nome da classe (Number), no nome do método (numberBetween) e nos parâmetros de entrada (0 e 1000), construa a expressão SQL para o campo age: 'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}'.

      Essa expressão gera um valor entre 0 e 1000 para o campo age.