实时数据开发|Flink实现数据输出--DataSinks操作
哇哦,又是快乐周五!今天主管又又又请我们喝奶茶了,是乐乐茶的草莓新品。甜甜的草莓配上糯叽叽的麻薯,喝完好满足。这应该不是什么加班信号吧哈哈哈,不加不加周五要回家。
前几天被不同的bug缠身,今天终于正式开始学习实时任务迁移(Blink–>Flink),同事给了我一个她迁移完成的任务,让我熟悉整个流程。迁移的实时任务主要分三个部分,一个是输入表,用source结尾;一个中间维表,用dim开头,一个输出表,sink结尾。同时要把实时任务的上游实时数据流也一起迁移。整个迁移过程不需要自增太多代码,主要是在Flink打通实时数据流,但是有很多细节需要注意。下周再学习如何查看日志,进行任务调试。
感觉实时任务和离线有蛮大不同的,期待后续有机会做完整的实时数据开发。
–学习区–
DataSinks 数据输出
经过各种数据 Transformation操作后,最终形成用户需要的结果数据集。通常情况用户希望将结果数据输出在外部存储介质或者传输到下游的消息中间件内,在Flink中将DataStream数据输出到外部系统的过程被定义为DataSink操作。在Flink内部定义的第三方外部系统连接器中,支持数据输出的有Apache Kafka、Apache Cassandra Kinesis、Hadoop FileSystem等。也可以使用第三方Connector,需要加入相应依赖。
1.基本数据输出
基本数据输出包含了文件输出、客户端输出、Socket网络端口等,这些输出方法经在Fink Datasmeam API中完成定义,使用过程不需要依赖其他第三方的库。
2.第三方数据输出
通常情况下,基于Flink提供的基本数据输出方式并不能完全地满足现实场景的需要,用户一般都会有自己的存储系统,因此需要将Flink系统中计算完成的结果数据通过第三方连接器输出到外部系统中。Flink中提供了DataSink类操作算子来专门处理数据的输出,所有的数据输出都可以基于实现SinkFunction完成定义。例如在Flink中定义了Flink Kafka Producer类来完成将数据输出到Kafka的操作,需要根据不同的Kafka 版本需要选择。