Flink 中使用 addSource 自定义数据源:重写 run 方法详解
在 Flink 中,如果想要将一个数据源作为输入,我们需要使用 'addSource' 方法来创建一个 'SourceFunction' 对象,并重写其中的 'run' 方法来实现数据的生成。下面是一个简单的示例,展示了如何重写 'run' 方法:
public class MySource implements SourceFunction<String> {
private volatile boolean isRunning = true;
@Override
public void run(SourceContext<String> ctx) throws Exception {
while (isRunning) {
// 生成数据
String data = generateData();
// 发送数据
ctx.collect(data);
// 控制生成数据的速度
Thread.sleep(1000);
}
}
@Override
public void cancel() {
isRunning = false;
}
private String generateData() {
// 生成随机字符串
return UUID.randomUUID().toString();
}
}
在上面的代码中,我们创建了一个名为 'MySource' 的类,实现了 'SourceFunction
在 'run' 方法中,我们使用一个 'while' 循环来不断生成数据,并使用 'ctx.collect' 方法将数据发送到 Flink 中。同时,我们也可以使用 'Thread.sleep' 方法来控制生成数据的速度。
在 'cancel' 方法中,我们通过设置 'isRunning' 变量为 'false' 来停止数据生成过程。
最后,在将 'MySource' 对象作为参数传递给 'addSource' 方法时,Flink 将会自动调用其中的 'run' 方法来生成数据,并将其作为输入流传递给后续算子进行处理。
原文地址: https://www.cveoy.top/t/topic/ok9g 著作权归作者所有。请勿转载和采集!