全部产品
Search
文档中心

Realtime Compute for Apache Flink:Faker

更新时间:Mar 10, 2026

Topik ini menjelaskan cara menggunakan konektor Faker untuk menghasilkan data simulasi.

Informasi latar belakang

Konektor Faker adalah konektor bawaan yang menghasilkan data uji berdasarkan ekspresi Java Faker untuk setiap bidang dalam tabel. Anda dapat menggunakan konektor ini untuk memperoleh data uji guna memverifikasi logika bisnis selama pengembangan dan pengujian.

Konektor Simulated Data Generator mendukung hal-hal berikut.

Kategori

Detail

Tipe yang didukung

tabel sumber dan tabel dimensi

Mode eksekusi

Mode batch dan stream

Format data

Tidak berlaku

Metrik pemantauan spesifik

Tidak ada

Tipe API

SQL

Mendukung pembaruan atau penghapusan data di tabel sink

Tidak berlaku

Prasyarat

Tidak ada.

Batasan

  • Konektor Faker hanya didukung pada versi Mesin komputasi Flink VVR 4.0.12 dan yang lebih baru.

  • Hanya tipe data berikut yang didukung: CHAR(n), VARCHAR(n), STRING, TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL, BOOLEAN, TIMESTAMP, ARRAY, MAP, MULTISET, dan ROW.

  • Saat Anda menggunakan tabel Faker sebagai tabel dimensi dalam operasi JOIN, konektor tidak melakukan pencarian (lookup) aktual. Sebagai gantinya, konektor langsung menghasilkan hasil berdasarkan kunci lookup dari tabel sumber.

Sintaksis

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

Dengan parameter

Kategori

Parameter

Deskripsi

Tipe data

Wajib

Nilai default

Catatan

Umum

connector

Tipe tabel.

String

Ya

Tidak ada

Nilainya harus `faker`.

fields.<field>.expression

Ekspresi Java Faker yang menghasilkan nilai untuk bidang tersebut.

String

Ya

Tidak ada

Untuk informasi selengkapnya, lihat Ekspresi bidang.

fields.<field>.null-rate

Peluang bahwa bidang bernilai null.

Float

Tidak

0,0

Tidak ada

fields.<field>.length

Ukuran koleksi untuk tipe ARRAY, MAP, atau MULTISET.

Integer

Tidak

1

Tidak ada

Khusus tabel sumber

number-of-rows

Jumlah baris data yang akan dihasilkan.

Integer

Tidak

-1

Jika parameter ini ditetapkan, tabel sumber bersifat bounded. Jika tidak, tabel sumber bersifat unbounded.

rows-per-second

Laju pembuatan data.

Integer

Tidak

10000

Nilai default-nya adalah 10.000 baris/detik.

Contoh

Contoh tabel dimensi

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;

Ekspresi bidang

  • Cara kerja

    Saat menggunakan konektor Faker, Anda harus menyediakan ekspresi spesifik dalam klausa WITH untuk setiap bidang yang didefinisikan dalam pernyataan Data Definition Language (DDL). Ekspresi tersebut harus dalam format 'fields.<field>.expression' = '#{className.methodName ''parameter'', ...}'. Tabel berikut menjelaskan parameter-parameternya.

    Parameter

    Deskripsi

    field

    Nama bidang dalam pernyataan DDL.

    className

    Nama kelas Faker.

    Java Faker menyediakan sekitar 80 kelas Faker untuk menghasilkan ekspresi bidang yang Anda butuhkan. Anda dapat memilih kelas sesuai kebutuhan.

    Catatan

    Nama kelas Faker tidak peka huruf besar/kecil.

    methodName

    Nama metode.

    Catatan

    Nama metode tidak peka huruf besar/kecil.

    parameter

    Parameter input suatu metode.

    Catatan
    • Setiap parameter input harus diapit oleh dua tanda kutip tunggal ('').

    • Pisahkan beberapa parameter dengan koma (,).

  • Contoh

    Bagian ini menggunakan ekspresi untuk bidang `age` dari bagian Sintaksis sebagai contoh: 'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}'. Langkah-langkah berikut menjelaskan cara membuat ekspresi SQL yang valid untuk bidang DDL menggunakan dokumentasi API Java Faker.

    1. Di dokumentasi API Java Faker, temukan kelas Number.Number类

    2. Di kelas Number, temukan metode numberBetween dan lihat deskripsinya.numberBetween

      Metode numberBetween mengembalikan nilai dalam rentang angka tertentu.

    3. Berdasarkan nama kelas `Number`, nama metode `numberBetween`, dan parameter input `0` serta `1000`, ekspresi SQL untuk bidang `age` dibuat sebagai berikut: 'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}'.

      Ekspresi ini menghasilkan nilai untuk bidang `age` yang berada di antara 0 dan 1000.