72、Flink 的 DataGen 连接器详解
DataGen 连接器
1.概述
DataGen 连接器提供了一个 Source 实现,允许为 Flink 生成输入数据,DataGen 连接器是内置的,不需要其他依赖项。
(图片来源网络,侵删)
2.使用
DataGeneratorSource 并行生成 N 个数据点,以下代码将生成 [“Number:0”、“Number:2”、…、“Numeric:999”] 记录的序列。
GeneratorFunction generatorFunction = index -> "Number: " + index; long numberOfRecords = 1000; DataGeneratorSource source = new DataGeneratorSource(generatorFunction, numberOfRecords, Types.STRING); DataStreamSource stream = env.fromSource(source, WatermarkStrategy.noWatermarks(), "Generator Source");
元素的顺序取决于并行度,每个子序列将按顺序生成;如果并行度为一,则将按照从“Number:0”到“Number:999”的顺序生成一个序列。
3.生成速率
DataGeneratorSource 内置了对速率的限制,以下代码将以不超过每秒100个事件的总源速率(跨所有源子任务)生成一个数据流。
GeneratorFunction generatorFunction = index -> index; double recordsPerSecond = 100; DataGeneratorSource source = new DataGeneratorSource( generatorFunction, Long.MAX_VALUE, RateLimiterStrategy.perSecond(recordsPerSecond), Types.STRING);
其他速率限制策略,如限制每个检查点发出的记录数,可以在 RateLimiterStrategy 中找到。
4.有界性
DataGeneratorSource 是有界的,可以将记录的数量设置为 Long.MAX_VALUE 来模拟无界流。
5.注意
在 GeneratorFunction 的输出相对于其输入具有确定性的条件下,DataGeneratorSource 可以用于实现至少一次和端到端精确一次处理保证的 Flink 作业。
可以根据生成的事件和自定义 WatermarkStrategy 在源位置生成确定性水印。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。