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学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
7月前
|
SQL 分布式计算 大数据
Spark开发实用技巧-从入门到爱不释手
Spark开发实用技巧-从入门到爱不释手
61 0
|
Java API 流计算
|
SQL 存储 Java
|
Web App开发 编解码 自然语言处理
rollup 实战第二节 搭建开发环境
在上一篇博客中,我简单的描述了 rollup 怎么使用,配置文件的使用。这一篇,来一起学习一下 rollup 怎么搭建开发服务,这里不包含任何的框架代码,我们需要 实现的是 ,我 在代码中修改任何地方,rollup可以自己监听到,并且给我给我更新浏览器就行。 这里的代码包括 css, 以及js等。
rollup 实战第二节 搭建开发环境
|
SQL Web App开发 流计算
Flink入坑指南第五章 - 语法糖 view
Flink入坑指南系列文章,从实际例子入手,一步步引导用户零基础入门实时计算/Flink,并成长为使用Flink的高阶用户。本文属个人原创,仅做技术交流之用,笔者才疏学浅,如有错误,欢迎指正。 什么是view(视图):视图无非就是存储在数据库中并具有名字的 SQL 语句,或者说是以预定义的 SQL 查询的形式存在的数据表的成分。
3872 0
|
SQL 机器学习/深度学习 Java
PyFlink 快速上手(一)|学习笔记
快速学习 PyFlink 快速上手
819 0
PyFlink 快速上手(一)|学习笔记
|
机器学习/深度学习 SQL Java
PyFlink 快速上手 | 学习笔记(一)
快速学习 PyFlink 快速上手
|
Java 关系型数据库 MySQL
入门案例(开发环境配置)|学习笔记
快速学习入门案例(开发环境配置)
104 0
入门案例(开发环境配置)|学习笔记
|
缓存 NoSQL 搜索推荐
第三课(二)|学习笔记
快速学习第三课(二)
131 0
第三课(二)|学习笔记
|
运维 算法 Cloud Native
第三课(三)|学习笔记
快速学习第三课(三)
176 0
第三课(三)|学习笔记