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