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

相关推荐
Hello.Reader18 小时前
Flink JobManager 内存配置指南别让“控制面”先 OOM
大数据·flink
Hello.Reader20 小时前
写给生产环境的 Flink 内存配置Process Memory、TaskManager 组件拆解与场景化调优
大数据·flink
DolphinScheduler社区1 天前
Linux 环境下,Apache DolphinScheduler 如何驱动 Flink 消费 Kafka 数据?
linux·flink·kafka·开源·apache·海豚调度·大数据工作流调度
Hello.Reader1 天前
Flink 进程三种配置方式、JVM 参数映射与常见踩坑
大数据·jvm·flink
Hello.Reader1 天前
Flink TaskManager 内存配置从“总量”到“组件”,把资源用在刀刃上
大数据·flink
zhangkaixuan4561 天前
Paimon 读取数据流程深度解析
大数据·hadoop·flink·apache·paimon
zhangkaixuan4562 天前
paimon 主键表 vs 非主键表配置速查
大数据·数据库·flink·apache·paimon
后季暖2 天前
flink报错记录和并行度回顾:Slot request bulk is not fulfillable!
大数据·flink
【赫兹威客】浩哥3 天前
【赫兹威客】伪分布式Flink测试教程
大数据·分布式·flink
Hello.Reader3 天前
Flink 2.0 从 flink-conf.yaml 到 config.yaml 的正确打开方式(含迁移与最佳实践)
java·前端·flink