Flink
流处理
API
![](https://img-blog.csdnimg.cn/296b1b6c224142f789b92bd00642f4fd.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc29uZ19xdWFuXw==,size_20,color_FFFFFF,t_70,g_se,x_16)
Environment
getExecutionEnvironment
创建一个执行环境,表示当前执行程序的上下文。 如果程序是独立调用的,则
此方法返回本地执行环境;如果从命令行客户端调用程序以提交到集群,则此方法
返回此集群的执行环境,也就是说,
getExecutionEnvironment
会根据查询运行的方
式决定返回什么样的运行环境,是最常用的一种创建执行环境的方式。
![](https://img-blog.csdnimg.cn/1ac1950f58774904b223f396fccbada0.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc29uZ19xdWFuXw==,size_20,color_FFFFFF,t_70,g_se,x_16)
如果没有设置并行度,会以 flink-conf.yaml 中的配置为准,默认是 1。
createLocalEnvironment
返回本地执行环境,需要在调用时指定默认的并行度。
![](https://img-blog.csdnimg.cn/3c248a289057491f991d81672abfae24.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc29uZ19xdWFuXw==,size_18,color_FFFFFF,t_70,g_se,x_16)
createRemoteEnvironment
返回集群执行环境,将
Jar
提交到远程服务器。需要在调用时指定
JobManager
的
IP
和端口号,并指定要在集群中运行的
Jar
包。
![](https://img-blog.csdnimg.cn/715607f8560a40619bd5d58bd837fac1.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc29uZ19xdWFuXw==,size_18,color_FFFFFF,t_70,g_se,x_16)
Source
从集合读取数据
![](https://img-blog.csdnimg.cn/ad167e3cf25746d7a68c0ef48e5d6cd5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc29uZ19xdWFuXw==,size_19,color_FFFFFF,t_70,g_se,x_16)
从文件读取数据
![](https://img-blog.csdnimg.cn/6b8b6db21b69426f9cd17b76b369fdad.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc29uZ19xdWFuXw==,size_19,color_FFFFFF,t_70,g_se,x_16)
以
kafka
消息队列的数据作为来源
需要引入
kafka
连接器的依赖:
![](https://img-blog.csdnimg.cn/b723ffe87ca1478e9b21633e37fb9f6d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc29uZ19xdWFuXw==,size_18,color_FFFFFF,t_70,g_se,x_16)
具体代码如下:
![](https://img-blog.csdnimg.cn/1854d04ff891425aba1492c6bb97eb43.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc29uZ19xdWFuXw==,size_19,color_FFFFFF,t_70,g_se,x_16)
自定义
Source
除了以上的
source
数据来源,我们还可以自定义
source
。需要做的,只是传入
一个
SourceFunction
就可以。具体调用如下:
DataStream<SensorReading> dataStream = env.addSource(
new
MySensor());
我们希望可以随机生成传感器数据,
MySensorSource
具体的代码实现如下:
![](https://img-blog.csdnimg.cn/3cc7024743b3446589a560194e2627fc.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAc29uZ19xdWFuXw==,size_19,color_FFFFFF,t_70,g_se,x_16)