全部产品
Search
文档中心

Realtime Compute for Apache Flink:Faker connector

更新时间:Jun 19, 2025

Topik ini menjelaskan penggunaan Faker connector.

Informasi latar belakang

Faker connector adalah konektor bawaan dari Realtime Compute for Apache Flink. Konektor ini menghasilkan data uji berdasarkan ekspresi Java Faker yang diberikan untuk setiap kolom dalam tabel. Jika Anda ingin menggunakan data uji untuk memverifikasi logika bisnis selama pengembangan atau pengujian, disarankan untuk menggunakan Faker connector.

Tabel berikut menjelaskan kemampuan yang didukung oleh Faker connector.

Item

Deskripsi

Jenis tabel

Tabel sumber dan tabel dimensi

Mode operasi

Mode batch dan mode streaming

Format data

Tidak tersedia

Metrik

Tidak tersedia

Jenis API

SQL API

Pembaruan atau penghapusan data di tabel sink

Tidak tersedia

Prasyarat

Tidak tersedia.

Batasan

  • Hanya Realtime Compute for Apache Flink yang menggunakan Ververica Runtime (VVR) 4.0.12 atau versi lebih baru yang mendukung Faker connector.

  • Faker connector hanya mendukung tipe data berikut: CHAR(n), VARCHAR(n), STRING, TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL, BOOLEAN, TIMESTAMP, ARRAY, MAP, MULTISET, dan ROW.

  • Jika Faker connector melakukan operasi JOIN pada tabel dimensi, kueri tidak dilakukan pada tabel dimensi. Output dihasilkan berdasarkan lookup key di 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''}'
);

Parameter dalam klausa WITH

Kategori

Parameter

Deskripsi

Tipe data

Diperlukan

Nilai default

Catatan

Parameter umum

connector

Jenis tabel.

String

Ya

Tidak ada

Nilai parameter ini adalah faker.

fields.<field>.expression

Ekspresi Java Faker yang menghasilkan nilai untuk kolom tersebut.

String

Ya

Tidak ada

Untuk informasi lebih lanjut, lihat bagian Ekspresi kolom dari topik ini.

fields.<field>.null-rate

Laju di mana nilai dalam kolom ini bernilai null.

Float

Tidak

0.0

Tidak tersedia

fields.<field>.length

Panjang kolom dengan tipe data ARRAY, MAP, atau MULTISET.

Integer

Tidak

1

Tidak tersedia

Parameter hanya untuk tabel sumber

number-of-rows

Jumlah baris data yang dihasilkan.

Integer

Tidak

-1

Jika Anda menentukan parameter ini, tabel sumber dibatasi. Jika Anda tidak menentukan parameter ini, tabel sumber tidak dibatasi.

rows-per-second

Laju di mana data acak dihasilkan.

Integer

Tidak

10000

Nilai default: 10000. Satuan: rekaman per detik.

Contoh

  • Membuat 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 kolom

  • Operasi

    Ketika menggunakan Faker connector, Anda harus mendefinisikan ekspresi dalam klausa WITH untuk setiap kolom dalam pernyataan DDL. Ekspresi tersebut memiliki format 'fields.<field>.expression' = '#{className.methodName ''parameter'', ...}'. Tabel berikut menjelaskan parameter dalam ekspresi.

    Parameter

    Deskripsi

    field

    Nama kolom dalam pernyataan DDL.

    className

    Nama kelas Faker.

    Java Faker menyediakan sekitar 80 kelas Faker untuk menghasilkan ekspresi kolom. Anda dapat memilih kelas berdasarkan kebutuhan bisnis Anda.

    null

    Nama kelas Faker tidak peka huruf besar/kecil.

    methodName

    Nama metode.

    null

    Nama metode tidak peka huruf besar/kecil.

    parameter

    Parameter input metode.

    null
    • Setiap parameter input metode harus diapit tanda kutip tunggal (').

    • Pisahkan beberapa parameter input dengan koma (,).

  • Contoh

    Dalam contoh ini, ekspresi 'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}' untuk kolom age dalam Sintaksis dihasilkan berdasarkan dokumentasi API Java Faker dengan langkah-langkah berikut:

    1. Temukan kelas Number dalam dokumentasi API Java Faker.Number类

    2. Temukan metode numberBetween dalam kelas Number dan lihat deskripsi metode.numberBetween

      Metode numberBetween menentukan angka antara mana nilai kembali berada.

    3. Dapatkan ekspresi SQL 'fields.age.expression' = '#{number.numberBetween ''0'',''1000''}' untuk kolom age berdasarkan kelas Number dan nilai 0 dan 1000 yang ditentukan oleh metode numberBetween.

      Ekspresi ini menunjukkan bahwa nilai yang dihasilkan untuk kolom age berada dalam rentang 0 hingga 1000.