Apache Flink Python API 的现状及未来规划(二)| 学习笔记

简介: 快速学习 Apache Flink Python API 的现状及未来规划。

开发者学堂课程【Apache Flink 入门到实战 - Flink 开源社区出品 Apache Flink Python API 的现状及未来规划(二)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/632/detail/10042


Apache Flink Python API 的现状及未来规划(二)

 

三,Apeche Flink Python API 核心算子介绝及应用

1,Python Table API 算子

除了单流之后,还有双流的操作,比如说双流转,双流的这个 minutes,所以说这种算子,在这个 python 的 API 里面也得到了很好的支持。

image.png

Windows 跟其他的词有些特殊,第一个,就是在实际当中,会有一个时间的属性,python 的语法和这个 Java 的语法是一模一样的,它的接口是保持一致的,那么 Tom 也是一个 tablewindow 然后再加一个 window 的一个定义

2,Python Table API 算子—Watermark 定义

.with_format(

Json()

.fail_on_missing_field(True)

.json_schema(

"{"

“type: 'object',"

“properties:{"

“a:{"

“type:'string”

"},"

“time:{"

“type: 'string',"

“format: 'date-time"

"}"

"}"

"}"

}

.with_schema(

Schema()

.field("rowtime",DataTypes.TIMESTAMP())

.rowtime(

Rowtime()

.timestamps_from field("time")

.watermarks_periodic_bounded(60000))

.field("a",DataTypes.STRING())

) 

python 能够和 Java API 进行对其功能进行对齐。但是始终没持续那么流畅,他不是按顺序的,可以说乱序,对于这种乱性,就是一个流畅客观存在的一种状态,在这个福利上,用 word 的机制来解决这种乱序的问题。

假设我有一个节省的数据,有一个 a 字段可以实现字段时间字段 daytime,增加一个 rom 的列,那么必须是一个 times name 的类型,并且点燃之后要围绕 Tom 定义

但是在表里面用的字段的名称是 rom time,也就是如果写 window 的话,用的应该是 real time 这个字符串

下面这个 what mark would mark ,有多种定义方式

这个6万单位其实是毫秒,那其实60秒一分钟他说明如果数据是乱序的,其实是能够处理在一分钟之内的乱序的,所以这个值调的越大数据乱序接受程度越高,但是有一点就是它数据的延迟也会越高

3,Python Table API -Java UDF

Java UDF

虽然我们在 Flink-1.9中没有支持 Python 的 UDF,但在 Fink 1.9 版木中我们可以使用 lava UDF。

1. 创建 java 项目,并配置 pom 依赖如下:

>

org apache.flink

flink-table-common

1.9-SNAPSHOT

provided

2.编写一个计算字符申长度的函数 UDFLength

package org.apache.flink.udf;

import org.apache.flink.table.functions.ScalarFunction;

public class UDFLength extends ScalarFunction{

public int eval(String str)(

return strlength();}

}

}

3.注册和使用:

t_envregister_java_function("len","org.apache.flink.udf.UDFLength")

....

select("word, lerdword),count(1) as count")

4,Python Table API -Java UDFs

开发 PythonJob,并使用上面自定义的 UDFLength 函数:https:/lgithub.com/sunjincheng121/enjoyment.code/blob/master/mypyFlink/enjoyment/word count_udfpy

提交 Python Job,并上传 UDFJAR 包:

/bin/flink run-py word_count_udf.py -j /flink-udf-1.0.0.jar

.Scalar FunctionT_envregister_iava_function("len","org.apache.flink.udf.UDFLength")

....

.select("word, len(word), count(1) as count")

.Table Function

t.env.register..ava..function("split", "com.pyflink.table,Split")

tab.join.laterall"Split(a) as (word, length)").select("a, word, length")

.Aggregate Function

t.env.register.javafunction("wAvg", "com.pyflink.table.WeightedAvg") tab.group by("a").select("a, wAvg(b) as d") 

5,Python Table API 常用链接

Python Table API 文档

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

Python Table API IDE 开发环境

https://cwiki.apache.org/confluence/display/FLINK/Setting+up+a+Flink+development+environment

Python Shell

https://ci.apache.org/projects/flink/flink-docs-master/ops/pythen_shell.html

Python Table API Tutorial

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

https://enjoyment.cool/

对那么 spark 本身它其实它指的是一些 udf 的性能上的一个损失,对于1.9来讲,目前的1.9来讲其实没有性能损失在里面,原因是这个,本身我们所有的案算子都是一个 Flink 内部的一个 native 算子,直接利用构建构建甲瓦的这构件加盟的这个 graph。 graph 其实跟目前这样的架构会共用和共享,CAD 里面的优化机制都能享受,在1.9版本里面只是切换了一种语言的入口。

从性能的角度现在没有损失。这个几个有价值的数据,研究方向和机器学习,研究方向论文,最好中文,这些都是机器学习的这个大数据的研究方向,在阿里内部也有很多这种方向。

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
720 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
SQL 人工智能 关系型数据库
Flink CDC YAML:面向数据集成的 API 设计
本文整理自阿里云智能集团 Flink PMC Member & Committer 徐榜江(雪尽)在 FFA 2024 分论坛的分享,涵盖四大主题:Flink CDC、YAML API、Transform + AI 和 Community。文章详细介绍了 Flink CDC 的发展历程及其优势,特别是 YAML API 的设计与实现,以及如何通过 Transform 和 AI 模型集成提升数据处理能力。最后,分享了社区动态和未来规划,欢迎更多开发者加入开源社区,共同推动 Flink CDC 的发展。
843 12
Flink CDC YAML:面向数据集成的 API 设计
|
SQL 人工智能 关系型数据库
Flink CDC YAML:面向数据集成的 API 设计
Flink CDC YAML:面向数据集成的 API 设计
631 5
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
4151 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
991 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
902 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
存储 Python
【免费分享编程笔记】Python学习笔记(二)
【免费分享编程笔记】Python学习笔记(二)
180 1
【免费分享编程笔记】Python学习笔记(二)
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
251 1
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
666 1
|
索引 Python
Python学习笔记编程小哥令狐~持续更新、、、(上)
Python学习笔记编程小哥令狐~持续更新、、、(上)
193 2