本文為您介紹如何使用Datagen連接器。
背景資訊
Datagen是主要用於調試的連接器,可以周期性地產生Datagen源表對應類型的隨機資料。如果您在開發或測試時,需要使用一些測試資料來快速驗證商務邏輯,您可以使用Datagen連接器來產生隨機資料。
Datagen支援計算資料行文法Computed Column syntax,使它可以靈活地產生資料。
Datagen連接器支援的資訊如下。
類別 | 詳情 |
支援類型 | 源表 |
運行模式 | 批模式和流模式 |
資料格式 | 暫不適用 |
特有監控指標 | 暫無 |
API種類 | SQL |
是否支援更新或刪除結果表資料 | 不涉及 |
使用限制
僅Flink計算引擎VVR 2.0.0及以上版本支援Datagen連接器。
文法結構
CREATE TABLE datagen_source (
name VARCHAR,
score BIGINT
) WITH (
'connector' = 'datagen'
);
WITH參數
參數 | 說明 | 資料類型 | 是否必填 | 預設值 | 備忘 |
connector | 源表類型。 | String | 是 | 無 | 固定值為 |
rows-per-second | 產生隨機資料的速率。 | Long | 否 | 10000(條/秒) | 無。 |
number-of-rows | 產生資料的總條數。 | Long | 否 | 無 | 預設產生的是無界資料來源表。如果任意欄位產生器類型為序列產生器,則當某一欄位的序列全部產生後,Source結束,產生有界表。 |
fields.<field>.kind | 為<field>產生資料的產生器類型。 | String | 否 | random | 參數可選值:
關於產生器詳情請參見產生器。 |
fields.<field>.min | 產生隨機數的最小值。 | 與<field>類型相同 | 否 | <field>類型的最小值 | 在fields.<field>.kind參數設定為random時,該參數配置有效。只支援數字類型。 |
fields.<field>.max | 產生隨機數的最大值。 | 與<field>類型相同 | 否 | <field>類型的最大值 | 同fields.<field>.min。 |
fields.<field>.max-past | 產生隨機時間戳記時,相對於本地機器目前時間戳的最大過去時間。 | Duration | 否 | 0 | 只支援時間戳記類型。 |
fields.<field>.length | 產生隨機字串的長度或者產生集合的容量。 | Integer | 否 | 100 | 支援以下任意一種類型:
|
fields.<field>.start | 序列產生器的起始值。 | 與<field>類型相同 | 否 | 無 | 在fields.<field>.kind參數設定為sequence時,該參數配置有效。 |
fields.<field>.end | 序列產生器的結束值。 | 與<field>類型相同 | 否 | 無 | 在fields.<field>.kind參數設定為sequence時,該參數配置有效。 |
參數中的<field>需要替換為您在DDL中定義的目標欄位名。
產生器
當前Datagen可以使用兩種產生器產生隨機資料:
隨機產生器(random):產生隨機值。您可以指定隨機產生資料的最大值和最小值。
序列產生器(sequence):在一定範圍內產生有序值,當產生序列達到結束值時結束,因此使用序列產生器將產生有界表。您可以指定序列的起始值和結束值。
各種資料類型支援的產生器如下所示。
類型 | 支援的產生器 | 備忘 |
BOOLEAN | random | 無。 |
CHAR | random/sequence | 無。 |
VARCHAR | random/sequence | 無。 |
BINARY | random/sequence | 無。 |
VARBINARY | random/sequence | 無。 |
STRING | random/sequence | 無。 |
DECIMAL | random/sequence | 無。 |
TINYINT | random/sequence | 無。 |
SMALLINT | random/sequence | 無。 |
INT | random/sequence | 無。 |
BIGINT | random/sequence | 無。 |
FLOAT | random/sequence | 無。 |
DOUBLE | random/sequence | 無。 |
DATE | random | 始終使用本地機器的當前日期。 |
TIME | random | 始終使用本地機器的目前時間。 |
TIMESTAMP | random | 在相對於本地機器目前時間戳的最大過去時間範圍內產生。 |
TIMESTAMP_LTZ | random | 同TIMESTAMP。 |
ROW | random | 產生隨機子欄位。 |
ARRAY | random | 產生隨機元素。 |
MAP | random | 產生隨機(key,value)。 |
MULTISET | random | 產生隨機元素。 |
使用樣本
Datagen通常與LIKE子句一起使用來類比一個表,如下所示。
CREATE TABLE datagen_source (
id INT,
score INT
) WITH (
'connector' = 'datagen',
'fields.id.kind'='sequence',
'fields.id.start'='1',
'fields.id.end'='50',
'fields.score.kind'='random',
'fields.score.min'='70',
'fields.score.max'='100'
);