大数据Flink(一百一十三):Flink Python写DataStreamAPI作业快速入门

news2025/1/12 0:55:51

文章目录

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流处理程序的一般流程

  1. 获取Flink流处理执行环境
  2. 构建source
  3. 数据处理
  4. 构建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博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2131304.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows Python 指令补全方法

网络上搜集的补全代码 # python startup file import sys import readline import rlcompleter import atexit import os# tab completion readline.parse_and_bind(tab: complete) # history file histfile os.path.join(os.environ[HOMEPATH], .pythonhistory) try:readline…

从数据模型到直观界面,零编码一键生成列表表单设计

大家好,我是软件部长,今天给大家介绍JVS低代码的模型生成设计功能。 欢迎关注微信公众号: 【软开企服】,获取开源项目分享、产品功能和视频教程等。 模型生成设计是什么 在JVS低代码平台根据模型生成设计,则是基于数据模型的列表…

【QT】Qt窗口

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:QT 目录 👉🏻菜单栏设置👉🏻QToolBar练习 👉🏻QStausBar👉🏻Q…

HTML5中的重要元素详解

第3章 HTML5中的重要元素 3.1 html根元素 HTML文档中,元素html代表了文档的根,其他所有元素都是在该元素的基础上进行延伸或拓展的,该元素也是HTML文档的最外层元素,因此也称为根元素。 html元素的常用属性: manif…

Kubernetes精讲之prometheus

目录 一 Prometheus简介 1.1 Prometheus架构 二 在k8s中部署Prometheus 2.1 下载部署Prometheus所需资源 2.3 登陆grafana 2.4 导入面板 三 监控使用示例 3.1 建立监控项目 一 Prometheus简介 Prometheus是一个开源的服务监控系统和时序数据库 其提供了通用的数据模型…

【专题】2024跨境出海供应链洞察-更先进供应链报告合集PDF分享(附原数据表)

原文链接:https://tecdat.cn/?p37665 当前,全球化商业浪潮促使跨境电商行业飞速发展,产业带与跨境电商接轨、平台半托管模式涌现、社交电商带来红利机会以及海外仓不断扩张,这使得产业带外贸工厂、内贸工厂、传统进出口企业和品…

攻防世界---> 简单检查-100

学习笔记。 前言: 额,不会 gdb 一直以为reverse不会用到gdb,pwn才会使用到gdb。(已老实) 下载 查壳。 ida打开。 ida动态,发现,咱们输入的v8用v6的地址接收,且v8只是if判断,所以能够确定&#x…

响应式网站对seo有哪些影响?

响应式网站设计是一种能够自动调整布局以适应不同屏幕尺寸和设备类型的网站设计方法。这种设计方式对于搜索引擎优化(SEO)有着显著的影响,主要体现在以下几个方面: 响应式网站对seo都有哪些影响? 提高用户体验&#…

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高…

mysql笔记6(数据库设计思维)

文章目录 1. 数据库设计基本概念① 什么叫关系?② 什么叫行?③ 什么叫列?④ 什么叫表结构?⑤ 为什么要提到实体和属性?⑥ 为什么有时候会在两张不同的表里建立重复的字段?⑦ 为什么有时候会故意设计一些冗余…

pgAdmin 4备份数据库失败,解决

pgAdmin4中,必须先设置二进制路径;binary paths pgAdmin4操作路径,File—>Preferences—>Paths—>Binary paths 找到postgreSQL的安装目录,bin目录复制,然后设置在截图标记位置; 再去备份数据库就…

uView使用心得

说实话我不爱用这个库,感觉很鸡肋,坑很多,可能没用习惯 picker选择器 绑定默认值是通过设置index,并且这个index需要通过api设置进去,设置defalutindex绑定值无效(只有初始化可以,后面动态改变…

Marin说PCB之在CST软件中如何搭建两端子电容器--03

上期文章的结尾讲到的问题不知诸位大神们是否还记得:就是一颗新电容器的物料是否可以完全替换掉之前的Murata家的这个GRT033D70E105ME18物料? 小编我也看了私信有不少的人认为是可以替换掉的,原因是两个电容封装,容值都是一样的&a…

中国科技统计年鉴1991-2020年

(数据收集)中国科技统计年鉴1991-2020年.Excel格式资源-CSDN文库https://download.csdn.net/download/2401_84585615/89475658 《中国科技统计年鉴》是由国家统计局社会科技和文化产业统计司与科学技术部战略规划司共同编辑的官方统计资料书&#xff0c…

web基础之文件上传

1.下载安装 下载地址 链接:百度网盘-链接不存在 提取码:jhks 安装 直接把他放在phpstudy的WWW目录中。(phpstudy的下载安装,可以自行百度一下) 打开 访问地址:127.0.0.1/upload-labs 问题 这里可能…

每日一练:删除1链表的倒数第N个节点

19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode) 一、题目要求 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例…

Ubuntu在CMakeLists.txt中指定OpenCV版本的参考方法

文章目录 写在前面一、问题描述二、解决方法参考链接 写在前面 自己的测试环境:   Ubuntu20.04, ROS-Noetic, OpenCV-4.2.0, OpenCV-4.5.4。 一、问题描述 编译运行OpenCV遇到如下报错: terminate called after throwing an instance of cv::Excep…

springbootadmin源码编译修改001_node版本管理工具nvm_任意切换node版本---VUE工作笔记0026

由于项目需要对springbootadmin的源码进行编译和修改. 但是springbootadmin的源码编译很麻烦,主要是由于,springbootadmin-server-ui这个项目,因为他是一个前后端分离的 vue项目,而且是使用 https://github.com/coreybutler/nvm-windows/releases/tag/1.1.12 首先去下载,发…

Day 72

作业 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QLineEdit> #include <QLabel> #include <QIcon> #include <QPushButton> #include <QMovie> #include <QPainter> #include <QWidget> …

最好用的 Redis 可视化工具,不愧是官方出品,功能确实强大(带私活源码)

对于开发人员来说&#xff0c;很多人都用过Redis&#xff0c;它对于数据 key-value 结构的存储系统性能表现很优秀。 当然了&#xff0c;在很多的项目都用到。 当存储数据量比较大时&#xff0c;我们想要直观的看 Redis 里面的数据&#xff0c;除了代码&#xff0c;当然就要采…