文章目录
Flink Python写DataStreamAPI作业快速入门
一、Flink数据流
二、Flink分层API
三、Flink流处理程序的一般流程
四、创建PyFlink项目
Flink Python写DataStreamAPI作业快速入门
一、Flink数据流
在 Flink 中,应用程序由数据流组成,这些数据流可以由用户定义的运算符(注:有时我们称这些运算符为“算子”)进行转换。这些数据流形成有向图,从一个或多个源开始,以一个或多个输出结束。
Flink支持流处理和批处理,它是一个分布式的流批结合的大数据处理引擎。在 Flink 中,认为所有的数据本质上都是随时间产生的流数据,把批数据看作是流数据的特例,只不过流数据是一个无界的数据流,而批数据是一个有界的数据流(例如固定大小的数据集)。如下图所示:
因此,Flink 是一个用于在无界和有界数据流上进行有状态计算的通用的处理框架,它既具有处理无界流的复杂功能,也具有专门的运算符来高效地处理有界流。通常我们称无界数据为实时数据,来自消息队列或分布式日志等流源(如 Apache Kafka 或 Kinesis)。而有界数据,通常指的是历史数据,来自各种数据源(如文件、关系型数据库等)。由 Flink 应用程序产生的结果流可以发送到各种各样的系统,并且可以通过 REST API 访问 Flink 中包含的状态。
当 Flink 处理一个有界的数据流时,就是采用的批处理工作模式。在这种操作模式中,我们可以选择先读取整个数据集,然后对数据进行排序、计算全局统计数据或生成总结所有输入的最终报告。当 Flink 处理一个无界的数据流时,就是采用的流处理工作模式。对于流数据处理,输入可能永远不会结束,因此我们必须在数据到达时持续不断地对这些数据进行处理。
二、Flink分层API
Flink 提供了开发流/批处理应用程序的API供开发者使用,越往上抽象程度越高,使用起来越方便;越往下越底层,使用起来难度越大,如下图所示:
Flink 提供了三个分层的 API。每个 API 在简洁性和表达性之间提供了不同的权衡,并针对不同的应用场景。
注意:在Flink1.12时支持流批一体,DataSetAPI已经不推荐使用了,所以课程中除了个别案例使用DataSet外,后续其他案例都会优先使用DataStream流式API,既支持无界数据处理/流处理,也支持有界数据处理/批处理!当然Table&SQL-API会单独学习。
三、Flink流处理程序的一般流程
- 获取Flink流处理执行环境
- 构建source
- 数据处理
- 构建sink
四、创建PyFlink项目
先利用PyCharm创建项目,名为pyflink_study, 并为项目选择创建新的虚拟环境,基础解释器选择Python3.7版本(阿里云Flink全托管空间预装的是Python3.7版本,因此需要我们在Python3.7版本开发代码),如下:(需要提前安装python3.7,资料中有安装包)
创建之后,我们会看到External Libraries 里面使用了Python3.7, 但是初始化并没有PyFlink,所以我们需要进行显示的安装,如下:
我们可以手动安装PyFlink,直接在PyCharm的Terminal下进行安装,在安装的过程中可以看到site-packages内容会不断增加。
python -m pip install apache-flink==1.15.4
最终完成之后可以在site-packages下面找到pyflink目录,如下:
有了这些信息就可以进行PyFlink的作业开发了。
PyFlink的作业开发代码将会在下一篇详细介绍。
- 📢博客主页:https://lansonli.blog.csdn.net
- 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
- 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
- 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨