Datagen
本文為您介紹如何使用Datagen連接器。
背景信息
Datagen是主要用于調(diào)試的連接器,可以周期性地生成Datagen源表對應類型的隨機數(shù)據(jù)。如果您在開發(fā)或測試時,需要使用一些測試數(shù)據(jù)來快速驗證業(yè)務邏輯,您可以使用Datagen連接器來生成隨機數(shù)據(jù)。
Datagen支持計算列語法Computed Column syntax,使它可以靈活地生成數(shù)據(jù)。
Datagen連接器支持的信息如下。
類別 | 詳情 |
支持類型 | 源表 |
運行模式 | 批模式和流模式 |
數(shù)據(jù)格式 | 暫不適用 |
特有監(jiān)控指標 | 暫無 |
API種類 | SQL |
是否支持更新或刪除結(jié)果表數(shù)據(jù) | 不涉及 |
使用限制
僅Flink計算引擎VVR 2.0.0及以上版本支持Datagen連接器。
語法結(jié)構(gòu)
CREATE TABLE datagen_source (
name VARCHAR,
score BIGINT
) WITH (
'connector' = 'datagen'
);
WITH參數(shù)
參數(shù) | 說明 | 數(shù)據(jù)類型 | 是否必填 | 默認值 | 備注 |
connector | 源表類型。 | String | 是 | 無 | 固定值為 |
rows-per-second | 生成隨機數(shù)據(jù)的速率。 | Long | 否 | 10000(條/秒) | 無。 |
number-of-rows | 生成數(shù)據(jù)的總條數(shù)。 | Long | 否 | 無 | 默認生成的是無界數(shù)據(jù)源表。如果任意字段生成器類型為序列生成器,則當某一字段的序列全部生成后,Source結(jié)束,生成有界表。 |
fields.<field>.kind | 為<field>生成數(shù)據(jù)的生成器類型。 | String | 否 | random | 參數(shù)可選值:
關(guān)于生成器詳情請參見生成器。 |
fields.<field>.min | 生成隨機數(shù)的最小值。 | 與<field>類型相同 | 否 | <field>類型的最小值 | 在fields.<field>.kind參數(shù)設置為random時,該參數(shù)配置有效。只支持數(shù)字類型。 |
fields.<field>.max | 生成隨機數(shù)的最大值。 | 與<field>類型相同 | 否 | <field>類型的最大值 | 同fields.<field>.min。 |
fields.<field>.max-past | 生成隨機時間戳時,相對于本地機器當前時間戳的最大過去時間。 | Duration | 否 | 0 | 只支持時間戳類型。 |
fields.<field>.length | 生成隨機字符串的長度或者生成集合的容量。 | Integer | 否 | 100 | 支持以下任意一種類型:
|
fields.<field>.start | 序列生成器的起始值。 | 與<field>類型相同 | 否 | 無 | 在fields.<field>.kind參數(shù)設置為sequence時,該參數(shù)配置有效。 |
fields.<field>.end | 序列生成器的結(jié)束值。 | 與<field>類型相同 | 否 | 無 | 在fields.<field>.kind參數(shù)設置為sequence時,該參數(shù)配置有效。 |
參數(shù)中的<field>需要替換為您在DDL中定義的目標字段名。
生成器
當前Datagen可以使用兩種生成器生成隨機數(shù)據(jù):
隨機生成器(random):生成隨機值。您可以指定隨機生成數(shù)據(jù)的最大值和最小值。
序列生成器(sequence):在一定范圍內(nèi)生成有序值,當生成序列達到結(jié)束值時結(jié)束,因此使用序列生成器將生成有界表。您可以指定序列的起始值和結(jié)束值。
各種數(shù)據(jù)類型支持的生成器如下所示。
類型 | 支持的生成器 | 備注 |
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 | 在相對于本地機器當前時間戳的最大過去時間范圍內(nèi)生成。 |
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'
);