72、Flink 的 DataGen 连接器详解

DataGen 连接器
1.概述

DataGen 连接器提供了一个 Source 实现,允许为 Flink 生成输入数据,DataGen 连接器是内置的,不需要其他依赖项。

2.使用

DataGeneratorSource 并行生成 N 个数据点,以下代码将生成 "Number:0"、"Number:2"、...、"Numeric:999" 记录的序列。

复制代码
GeneratorFunction<Long, String> generatorFunction = index -> "Number: " + index;
long numberOfRecords = 1000;

DataGeneratorSource<String> source =
        new DataGeneratorSource<>(generatorFunction, numberOfRecords, Types.STRING);

DataStreamSource<String> stream =
        env.fromSource(source,
        WatermarkStrategy.noWatermarks(),
        "Generator Source");

元素的顺序取决于并行度,每个子序列将按顺序生成;如果并行度为一,则将按照从"Number:0"到"Number:999"的顺序生成一个序列。

3.生成速率

DataGeneratorSource 内置了对速率的限制,以下代码将以不超过每秒100个事件的总源速率(跨所有源子任务)生成一个数据流。

复制代码
GeneratorFunction<Long, Long> generatorFunction = index -> index;
double recordsPerSecond = 100;

DataGeneratorSource<String> source =
        new DataGeneratorSource<>(
             generatorFunction,
             Long.MAX_VALUE,
             RateLimiterStrategy.perSecond(recordsPerSecond),
             Types.STRING);

其他速率限制策略,如限制每个检查点发出的记录数,可以在 RateLimiterStrategy 中找到。

4.有界性

DataGeneratorSource 是有界的,可以将记录的数量设置为 Long.MAX_VALUE 来模拟无界流。

5.注意

在 GeneratorFunction 的输出相对于其输入具有确定性的条件下,DataGeneratorSource 可以用于实现至少一次和端到端精确一次处理保证的 Flink 作业。

可以根据生成的事件和自定义 WatermarkStrategy 在源位置生成确定性水印。

相关推荐
阿里云大数据AI技术1 小时前
分链路差异化设计的DSP准实时数仓|钛动科技基于阿里云实时计算 Flink 版 + DLF Paimon + EMR Serverless StarRocks 的实践
人工智能·flink
陕西企来客1 小时前
2026年7月AI智能搜索曝光趋势研判
大数据·人工智能·机器学习·ai智能搜索曝光
hangyuekejiGEO3 小时前
GEO技术服务选型指南
大数据·人工智能·python
风途科技~5 小时前
雷达与压力一体式设计,可同时选用或单独选用—一体式管网液位计灵活配置
大数据·人工智能
大大大大晴天7 小时前
浅析StarRocks 表设计:表类型、分布策略与索引
大数据
APItesterCris7 小时前
Open Claw 实战教程:5 分钟搭建京东商品自动化监控与数据分析系统
大数据·运维·数据库·数据仓库·自动化
全栈派森9 小时前
告别大表膨胀!MySQL 冷热分离落地全过程(含 CDC 与单行锁抢占实战)
大数据·mysql
LinuxGeek102410 小时前
Kylin-Server-V11、openEuler-22.03和openEuler-24.03适配原生rpm的MySQL 8.4.11版本正式发布
大数据·mysql·kylin
2601_9625029010 小时前
点胶点钻机运动控制与视觉定位系统解析:精度、算法与工程实现
大数据·架构
阿部多瑞 ABU11 小时前
正反馈的死亡螺旋:数字资本时代泛二次元文化-情感-金融复合体的系统性分析
大数据·人工智能·金融