PyFlink 快速上手(二)|学习笔记

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 快速学习 PyFlink 快速上手(二)

开发者学堂课程【开源 Flink 极速上手教程:PyFlink 快速上手】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/331/detail/3712


PyFlink 快速上手(二)


三.PyFlink 功能演示

https://github.com/pyflink/playgrounds/tree/1.11

打开该网页页面,提供了 PyFlink 相关的一些 demo,这些 demo运行在 Docker 中,首先需要在本地安装 Docker 环境。环境安装完成后,首先运行命令 docker-compose up -d,该命令会启动一个Flink 的 standalone 集群,之后运行的 Flink 例子都会提交到该集群。输入命令 docker ps 可以查看。

例一.WordCount

首先定义了 blink_planner,同时应用在批模式下,作业并发度是1。在作业中还定义了 source,只有一个 string 类型字段,输入数据来自一个文件。同时也定义了一个 sink,包括两个字段,一个是 word,一个是 count,类型分别是 string 类型和 BIGINT 类型,sink 位置也是在本地一个文件中。作业基本执行逻辑是读取 source 中的数据,按照 group_by 计算 word 的频率,将结果写入 sink。最后Execute 语句会将作业提交执行。运行该作业,可以看到作业运行之后提交到刚刚的 Flink 集群中执行。查看作业执行结果:

flink,2

pyflink,1

image.png

例二.Python UDF

运行在 blink_planner,运行在批处理模式下,作业并发度为1。在作业中定义了一个 UDF,该 UDF 输入包括两个列,类型为 BIGINT,输出类型也为 BIGINT。UDF逻辑是将这两个列相加作为一个结果输出。 source 表与 sink 表与上例类似。在执行逻辑中,读取 source表然后运行 UDF,将两列相加再将计算结果写入 sink 表。执行该作业,查看执行结果:

3

image.png

例三.带有依赖的 Python UDF

在该 UDF中引用了一个第三方依赖,在作业执行中执行该依赖,使用set_python_requirements。查看 requirements文件,可以看到文件只包含了一行,指定了需要的依赖及版本。运行该作业,在初始化阶段需要下载 Python 相关的依赖,查看执行结果:

3

image.png

例四.向量化 Python UDF

在 UDF 定义时加了一个 udf_type 字段,说明是向量化的 Python UDF。其他逻辑与普通 Python UDF 类似。执行作业,查看执行结果:

3

image.png

例五.在 Java Table API 中使用 Python UDF

用 Java 语言写,通过一个 DDL 语句的方式注册 Python UDF,然后在 execute Sql 语句中使用注册的 UDF。先编译该 UDF,执行作业,通过 flink run -j 命令指定 jar 包,然后通过 pyfs 参数指定运行 Python UDF 所用到的路径。

例六.在 SQL 中使用 Python UDF

在资源文件中,声明了一个 UDF,名字是 add_one,类型是 Python,位置是 udfs.add_one。运行作业,查看执行结果:

2

3

4

image.png

四.PyFlink 下一步规划

1.Python DataStream API

2.Python UDAF 支持/Pandas UDAF 支持

3.Java/Python 通信优化

常用资源链接

1.Python Table API 文档

https://ci.apache.org/projects/flink/flink-docs-master/api/python/

2.PyFlink 文档

https://ci.apache.org/projects/flink/flink-docs-master/dev/table/python/

3.PyFlink playground

https://github.com/pyflink/playgrounds/tree/1.11

回顾:PyFlink 项目的目标以及发展历程,同时也学习了 PyFlink 目前的核心功能,比如 Python Table API,Python UDF,向量化 Python UDF,如何在 Python UDF中使用Metrics 以及 Python 的依赖管理,Python UDF 目前所做的一些优化工作,同时也展示了一些 Demo,使对 Python UDF 的功能有更直观的了解,最后,学习了 PyFlink 的下一步规划。

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
5月前
|
数据采集 前端开发 测试技术
《手把手教你》系列技巧篇(三十一)-java+ selenium自动化测试- Actions的相关操作-番外篇(详解教程)
【4月更文挑战第23天】本文介绍了网页中的滑动验证码的实现原理和自动化测试方法。作者首先提到了网站的反爬虫机制,并表示在本地创建一个没有该机制的网页,然后使用谷歌浏览器进行验证。接着,文章详细讲解了如何使用WebElement的click()方法以及Action类提供的API来模拟鼠标的各种操作,如右击、双击、悬停和拖动。
33 2
|
SQL 存储 Java
PyFlink 快速上手 | 学习笔记(二)
快速学习 PyFlink 快速上手
203 0
PyFlink 快速上手 | 学习笔记(二)
|
Java API 流计算
PyFlink 快速上手 | 学习笔记(三)
快速学习 PyFlink 快速上手
280 0
PyFlink 快速上手 | 学习笔记(三)
|
SQL 机器学习/深度学习 Java
PyFlink 快速上手(一)|学习笔记
快速学习 PyFlink 快速上手
749 0
PyFlink 快速上手(一)|学习笔记
|
机器学习/深度学习 SQL Java
PyFlink 快速上手 | 学习笔记(一)
快速学习 PyFlink 快速上手
216 1
|
存储 Oracle 关系型数据库
第二课(三)|学习笔记
快速学习第二课(三)
188 0
第二课(三)|学习笔记
|
SQL 存储 缓存
第二课(二)|学习笔记
快速学习第二课(二)
142 0
第二课(二)|学习笔记
|
缓存 NoSQL 搜索推荐
第三课(二)|学习笔记
快速学习第三课(二)
126 0
第三课(二)|学习笔记
|
运维 算法 Cloud Native
第三课(三)|学习笔记
快速学习第三课(三)
170 0
第三课(三)|学习笔记
|
负载均衡 架构师 关系型数据库
第二课(一)|学习笔记
快速学习第二课(一)
110 0
第二课(一)|学习笔记