Flink通过实现SourceFunction接口来自定义非并行的Source,实现ParallelSourceFunction接口来自定义并行的Source。
为了测试开发,以下实现SourceFunction接口自定义一个Source来生成测试数据。
生成如下格式的流量测试数据:
用户id|城市id|上行流量|下行流量|发生时间
471|4|0.0745|0.3826|1609863101410
495|0|0.5707|0.3274|1609863101410
实现SourceFunction需要重写以下两个方法:
run 发射元素
cancel 关闭source
实现代码:
package com.upupfeng.source;
import org.apache.flink.streaming.api.functions.source.SourceFunction;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Random;
/**
* @author mawf
*/
public class FakeTrafficRecordSource implements SourceFunction<String> {
private static Random random = new Random();
private volatile boolean isRunning = true;
// sleep的毫秒数
private long sleepMillis;
public FakeTrafficRecordSource() {
new FakeTrafficRecordSource(500l)