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

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

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

课程地址https://developer.aliyun.com/learning/course/760/detail/13342


PyFlink 快速上手


三.PyFlink 功能演示

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

例一. WordCount

图片11.png

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

flink,2

pyflink,1

图片12.png

例二.Python UDF

图片13.png

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

3

图片14.png

例三.带有依赖的 Python UDF

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

3

例四.向量化 Python UDF

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

3

例五. Java Table API 中使用 Python UDF

图片14.png

 

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

例六. SQL 中使用 Python UDF

图片15.png

 

如上图,声明了一个 UDF,名字是 add_one,类型是 Python,位置是 udfs.add_one。运行作业,查看执行结果:

2

3

4


四.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 APIPython UDF向量化Python UDF

,如何在Python UDF中使用Metrics以及Python的依赖管理,Python UDF目前所做的一些优化工作,同时也了解了一些Demo,对于PyFlink的功能有了更直观的了解,最后是PyFlink的下一步规划。

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
SQL 机器学习/深度学习 Java
用Python进行实时计算——PyFlink快速入门
Flink 1.9.0及更高版本支持Python,也就是PyFlink。 在最新版本的Flink 1.10中,PyFlink支持Python用户定义的函数,使您能够在Table API和SQL中注册和使用这些函数。但是,听完所有这些后,您可能仍然想知道PyFlink的架构到底是什么?作为PyFlink的快速指南,本文将回答这些问题。
2466 0
用Python进行实时计算——PyFlink快速入门
|
SQL 存储 Java
PyFlink 快速上手 | 学习笔记(二)
快速学习 PyFlink 快速上手
191 0
PyFlink 快速上手 | 学习笔记(二)
|
机器学习/深度学习 SQL Java
PyFlink 快速上手 | 学习笔记(一)
快速学习 PyFlink 快速上手
200 1
|
SQL 机器学习/深度学习 Java
PyFlink 快速上手(一)|学习笔记
快速学习 PyFlink 快速上手
688 0
PyFlink 快速上手(一)|学习笔记
|
SQL Java API
PyFlink 快速上手(二)|学习笔记
快速学习 PyFlink 快速上手(二)
395 0
PyFlink 快速上手(二)|学习笔记
|
SQL 分布式计算 监控
SparkSQL 初体验_命令式案例 | 学习笔记
快速学习 SparkSQL 初体验_命令式案例
74 0