附上之前算子串烧时的图,之前讲解的是中间的Transformations,本文探讨一下Source和Sink,例子用Source,Sink类似。
1 预定义Source和Sink
直接使用,无需引入额外的依赖,一般用于测试、调试
1.1 基于文件
代码:
文件1.txt
输出:
1.2 基于socket
代码:
socket:
输出:
1.3 基于Elements
1.3.1 GenerateSequence
输出:
1.3.2 FromElements
输出:
1.4 基于Collections
1.4.1 FromCollection
输出:
1.5 自定义source
1.5.1 实现SourceFunction接口
需要实现run、cancel两个方法,非并行,并行度为1
输出:
1.5.2 实现ParallelSourceFunction
输出:
1.5.3 继承RichSourceFunction
输出:
1.5.4 继承RichParallelSourceFunction
输出:
2 捆绑的Connectors
需要专门引入对应的jar包,以实现外部数据进出Flink,如
1)Apache Flink(source/sink)
2)Apache Cassandra(source/sink)
3)Elasticsearch(sink)
4)Hadoop FileSystem/HDFS(sink)
5)RabbitMQ(source/sink)
6)Apache NiFi(source/sink)
7)Twitter Steaming API(source)
2.1 Kafka作为Source,Sink到MySQL
Step1:配置MySQL连接
Step2:启动工程,等待从Kafka生产过来的数据,然后消费
启动工程之前,要先启动zookeeper和kafka
Step3:调用Kafka API生产数据
Step4:数据sink到MySQL存储
3 Apache Bahir
可以到官网查看,本文不展开。