Flink:使用 Faker 和 DataGen 生成测试数据

|--------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| | 博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,京东购书链接:https://item.jd.com/12677623.html,扫描左侧二维码进入京东手机购书页面。 |

DataGen 是开源 Flink 就内置的随机数据生成器;DataGen 生成的数据仅支持随机和序列值两种,且也并不是所有的数据类型都能支持随机或序列值,例如最常见的一个需求:针对时间类型就不能生成指定区间内的单调递增的数值,相较而言,Faker 的功能要明显强于 DataGen,我们只需掌握 Faker 这一种数据生成器就足够了。

1. 安装

bash 复制代码
sudo -u flink wget https://github.com/knaufk/flink-faker/releases/download/v0.5.3/flink-faker-0.5.3.jar -P /usr/lib/flink/lib/

2. 示例

sql 复制代码
-- example 1: currency_rates

drop table if exists currency_rates;

create table if not exists currency_rates (
    currency_code string,
    eur_rate decimal(6,4),
    rate_time timestamp(3)
)
with (
    'connector' = 'faker',
    'fields.currency_code.expression' = '#{Currency.code}',
    'fields.eur_rate.expression' = '#{Number.randomdouble ''4'',''0'',''10''}',
    'fields.rate_time.expression' = '#{date.past ''15'',''SECONDS''}',
    'rows-per-second' = '100'
);

select * from currency_rates;

-- example 2: transactions

drop table if exists transactions;

create table if not exists transactions (
    `id` string,
    `currency_code` string,
    `total` decimal(10,2),
    `transaction_time` timestamp(3),
    watermark for `transaction_time` as transaction_time - interval '30' second
) with (
    'connector' = 'faker',
    'fields.id.expression' = '#{Internet.UUID}',
    'fields.currency_code.expression' = '#{Currency.code}',
    'fields.total.expression' = '#{Number.randomDouble ''2'',''10'',''1000''}',
    'fields.transaction_time.expression' = '#{date.past ''30'',''SECONDS''}',
    'rows-per-second' = '100'
);

select * from transactions;

3. 资源

Flink Faker 项目地址:https://github.com/knaufk/flink-faker/?tab=readme-ov-file

表达式文档:https://github.com/datafaker-net/datafaker

相关推荐
岁岁种桃花儿1 天前
Flink从入门到上天系列第十九篇:Flink当中的容错机制
大数据·flink
D愿你归来仍是少年1 天前
Apache Spark Real-Time Mode 深度解析:打破微批次壁垒,挑战 Flink 的实时王座
flink·spark·apache
海南java第二人1 天前
Flink状态后端与容错机制深度剖析:TB级状态下的高可用实战
java·spring·flink
董可伦1 天前
Flink DataStream2Table 总结
服务器·python·flink
岁岁种桃花儿1 天前
Flink从入门到上天系列第二十二篇:Flink当中的FlinkSQL
大数据·flink
渣渣盟2 天前
Flink定时器实战:处理时间与事件时间
大数据·flink·scala
岁岁种桃花儿2 天前
Flink从入门到上天系列第十七篇:Flink当中的算子状态
大数据·flink
IT果果日记3 天前
K8S+Dinky+Flink管理你的计算资源
大数据·后端·flink
岁岁种桃花儿3 天前
Flink从入门到上天系列第十六篇:Flink当中的键控状态
大数据·flink
Hello.Reader4 天前
Flink Task Lifecycle 一篇讲透 StreamTask 与 Operator 生命周期
java·大数据·flink