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 在源位置生成确定性水印。

相关推荐
心仪悦悦24 分钟前
RDD的自定义分区器
大数据·分布式·spark
End92829 分钟前
RDD的自定义分区器
大数据
数据库安全1 小时前
美创科技针对《银行保险机构数据安全管理办法》解读
大数据·人工智能·产品运营
ice___Cpu2 小时前
Git - 1( 14000 字详解 )
大数据·git·elasticsearch
tebukaopu1482 小时前
官方 Elasticsearch SQL NLPChina Elasticsearch SQL
大数据·sql·elasticsearch
jiedaodezhuti10 小时前
为什么elasticsearch配置文件JVM配置31G最佳
大数据·jvm·elasticsearch
思通数据10 小时前
AI全域智能监控系统重构商业清洁管理范式——从被动响应到主动预防的监控效能革命
大数据·人工智能·目标检测·机器学习·计算机视觉·数据挖掘·ocr
lilye6611 小时前
精益数据分析(55/126):双边市场模式的挑战、策略与创业阶段关联
大数据·人工智能·数据分析
码上地球11 小时前
因子分析基础指南:原理、步骤与地球化学数据分析应用解析
大数据·数据挖掘·数据分析
胡小禾11 小时前
ES常识7:ES8.X集群允许4个 master 节点吗
大数据·elasticsearch·搜索引擎