Flink 学习笔记(五)Sink
Data sinks 消费 DataStreams 并将其转发到文件,套接字,外部系统或打印出来。 Flink带有多种内置输出格式,这些格式封装在DataStreams的操作后面:
1. 打印结果
1 | print() / printToErr() // 在标准输出/标准错误流上打印每个元素的 toString() 值。 |
2. 输出文件
1 | writeAsText() // TextOutputFormat text 文件格式 |
3. 写入 socket
1 | writeToSocket() // 根据 SerializationSchema 写到 socket |
4. 自定义的:
1 | addSink() // 自定义 sink |
一般常用自定义的 sink
Flink Kafka Producer
1 | DataStream<String> stream = ...; |
实现自定义的 function 可以继承 RichSinkFunction,重写其中的方法
总结
DataStream上的 write*()
方法主要用于调试目的。 没有参与 Flink 的检查点,这意味着这些功能通常具有“至少一次”(at-least-once)的语义。 刷新到目标系统的数据取决于 OutputFormat 的实现。 这意味着并非所有发送到OutputFormat 的元素都立即显示在目标系统中。 同样,在失败的情况下,这些记录可能会丢失。
为了将流可靠,准确地一次传输到文件系统中,请使用 flink-connector-filesystem。 此外,通过.addSink(...)
方法进行的自定义实现可以参与 Flink 一次精确语义的检查点。
- 本文作者: Kelly Liu
- 本文链接: http://tiantianliu2018.github.io/2020/03/27/Flink-学习笔记(五)Sink/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!