sinkto 可以加两个对象吗
时间: 2024-01-11 15:05:01 浏览: 31
Flink中的`SinkFunction`接口提供了`addSink`方法,可以将数据写入到指定的Sink中。`addSink`方法的参数是一个`SinkFunction`对象,表示数据写入的目标。在`addSink`方法中,可以通过`.name`方法为Sink指定名称,但是`addSink`只能接收一个SinkFunction对象作为参数,不能同时写入两个Sink。
如果需要将数据同时写入两个Sink,可以使用`split`算子将一个数据流拆分成多个数据流,然后对每个数据流分别调用`addSink`方法,写入到不同的Sink中。例如:
```java
DataStream<String> input = ...;
SplitStream<String> splitStream = input.split(new OutputSelector<String>() {
@Override
public Iterable<String> select(String value) {
List<String> outputs = new ArrayList<>();
if (value.contains("A")) {
outputs.add("sink1");
} else {
outputs.add("sink2");
}
return outputs;
}
});
splitStream.select("sink1").addSink(new SinkFunction<String>() {
@Override
public void invoke(String value) throws Exception {
// 将数据写入Sink1
}
});
splitStream.select("sink2").addSink(new SinkFunction<String>() {
@Override
public void invoke(String value) throws Exception {
// 将数据写入Sink2
}
});
```
在上面的例子中,首先使用`split`算子将数据流拆分成两个数据流,然后对每个数据流分别调用`addSink`方法,写入到不同的Sink中。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)