本文为您介绍如何使用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'
);