跳到主要内容

DataGen

介绍

支持:

  • Scan Source: Bounded
  • Scan Source: UnBounded

DataGen连接器允许通基内存的数据生成来创建表,这对于本地查询,而不是外部系统查询来说是非常有用的,比如kafka。表可以包含Computed Column syntax字段计算语法,以支持更灵活的数据生成。

DataGen是内建连接器,无需添加额外依赖。

使用

默认情况下,DataGen表将创建无限数量的数据行,并且每个字段都是随机值。对于可变大小的类型,比如char/varchar/string/array/map/multiset,可以指定他们的长度。另外也可以通过指定总行数,来创建一个有界表。

flink也提供了序列化生成器,用户可以指定序列的开始和结束之。如果表的某个字段为序列类型,则表将会成为有界表,当第一个字段值生成到他对应的结束值时数据生成结束。

时间类型通常为本地机器的当前系统时间。

CREATE TABLE Orders (
order_number BIGINT,
price DECIMAL(32,2),
buyer ROW<first_name STRING, last_name STRING>,
order_time TIMESTAMP(3)
) WITH (
'connector' = 'datagen'
)

通常情况下,数据生成连接器和LINK子句一起使用来模拟物理表。

CREATE TABLE Orders (
order_number BIGINT,
price DECIMAL(32,2),
buyer ROW<first_name STRING, last_name STRING>,
order_time TIMESTAMP(3)
) WITH (...)

-- 创建一个模拟表
CREATE TEMPORARY TABLE GenOrders
WITH (
'connector' = 'datagen',
'number-of-rows' = '10'
)
LIKE Orders (EXCLUDING ALL)

数据类型

类型支持的生成器备注
BOOLEANrandom
CHARrandom / sequence
VARCHARrandom / sequence
STRINGrandom / sequence
DECIMALrandom / sequence
TINYINTrandom / sequence
SMALLINTrandom / sequence
INTrandom / sequence
BIGINTrandom / sequence
FLOATrandom / sequence
DOUBLErandom / sequence
DATErandom通常为本地机器的日期。
TIMErandom通常为本地机器的时间。
TIMESTAMPrandomflink-1.13.x:通常为本地机器的时间戳。
flink-1.5.x:解析为本地机器时间戳过去一段时间的时间戳,最大可以过去的时间可以通过 max-past 选项配置。
TIMESTAMP_LTZrandomflink-1.13.x:通常为本地机器的时间戳。
flink-1.5.x:解析为本地机器时间戳过去一段时间的时间戳,最大可以过去的时间可以通过 max-past 选项配置。
INTERVAL YEAR TO MONTHrandom
INTERVAL DAY TO MONTHrandom
ROWrandom通过随机子属性值生成一个row类型字段值。
ARRAYrandom通过随机entry生成一个数组。
MAPrandom通过随机entry生成一个map表。
MULTISETrandom通过随机entry生成一个multiset

连接器选项

Option是否必须默认值类型描述
connector必须(none)String指定使用那个连接器,这儿应该是:datagen
rows-per-second可选10000Long指定每秒生成的行数以控制发射频率。
number-of-rows可选(none)Long发射的数据总行数。默认情况下,表是无界的。
fields.#.kind可选randomString#字段的生成器,可以是sequencerandom
fields.#.min可选(该类型最小值)(Type of field)随机生成器的最小值,指针对于数字类型。
fields.#.max可选(该类型最大值)(Type of field)随机生成器的最大值,只针对于数字类型。
从 flink-1.15.x:开始支持
fields.#.max-past
可选0Duration时间戳随机生成器可以过去的最大时间,只用于 timestamp 类型。
fields.#.length可选100Integer生成 char/varchar/string/array/map/multiset 可变长度类型的大小或长度。
fields.#.start可选(none)(Type of field)序列生成器的开始值。
fields.#.end可选(none)(Type of field)序列生成器的结束值。

注:上面选项中的 # ,在实际使用时,要替换为创建的表的某个字段名称,表示对这个字段设置属性。