Flink的数据接收器(Data Sink)是将Flink中的数据流输出到外部存储系统的机制。它消费Flink的DataStream,输出数据到目标存储 medium。
Flink提供了丰富的数据接收器支持,主要有:
- 文件接收器:将数据输出到本地文件、HDFS文件等。
- Kafka接收器:将数据输出到Kafka Topic。
- Socket接收器:通过Socket连接输出数据。
- 自定义接收器:实现自定义SinkFunction消费DataStream数据。
- JDBC接收器:将数据输出到数据库表。
使用Flink数据接收器的一般步骤:
- 添加数据接收器依赖(如果有)。
- 创建数据接收器对象,指定输出路径、序列化器等。
- 使用DataStream.addSink()方法将数据流输出到接收器。
下面通过文件接收器和Kafka接收器的例子来说明Flink数据接收器的使用:
文件接收器:
DataStream<String> stream = ...
stream.writeAsText("file:///path/to/file");
Kafka接收器:
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
FlinkKafkaProducer011<String> kafkaSink = new FlinkKafkaProducer011<>(
"topic",
new SimpleStringSchema(),
props);
stream.addSink(kafkaSink);
自定义接收器:
public static class CustomSink implements SinkFunction<Integer> {
@Override
public void invoke(Integer value) throws Exception {
System.out.println(value);
}
}
DataStream<Integer> stream = ...
stream.addSink(new CustomSink());