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

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 快速学习 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轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
22天前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
517 13
Apache Flink 2.0-preview released
|
26天前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
60 3
|
4天前
|
JSON 安全 API
如何使用Python开发API接口?
在现代软件开发中,API(应用程序编程接口)用于不同软件组件之间的通信和数据交换,实现系统互操作性。Python因其简单易用和强大功能,成为开发API的热门选择。本文详细介绍了Python开发API的基础知识、优势、实现方式(如Flask和Django框架)、实战示例及注意事项,帮助读者掌握高效、安全的API开发技巧。
23 3
如何使用Python开发API接口?
|
4天前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
13 1
|
11天前
|
JSON API 数据格式
如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架
本文介绍了如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架,适合小型项目和微服务。文章从环境准备、创建基本Flask应用、定义资源和路由、请求和响应处理、错误处理等方面进行了详细说明,并提供了示例代码。通过这些步骤,读者可以快速上手构建自己的RESTful API。
23 2
|
23天前
|
JSON API 数据格式
使用Python和Flask构建简单的RESTful API
【10月更文挑战第12天】使用Python和Flask构建简单的RESTful API
41 1
|
29天前
|
API 数据库 网络架构
深入浅出:使用Python Flask实现RESTful API
【10月更文挑战第7天】在数字化时代,掌握如何高效构建和部署RESTful API是后端开发者的必备技能。本文将引导你了解如何使用Python Flask框架快速打造一个简单而强大的RESTful服务。从基础环境搭建到API设计原则,再到实际代码示例,我们将一步步揭开Flask框架的神秘面纱,让你轻松上手,并能够自信地处理更复杂的项目。
|
23天前
|
API 网络架构 Python
使用Python和Flask构建简单的RESTful API
【10月更文挑战第12天】使用Python和Flask构建简单的RESTful API
32 0
|
27天前
|
JSON API 数据格式
使用Python构建RESTful API
【10月更文挑战第8天】使用Python构建RESTful API
35 0
|
1天前
|
Python
不容错过!Python中图的精妙表示与高效遍历策略,提升你的编程艺术感
本文介绍了Python中图的表示方法及遍历策略。图可通过邻接表或邻接矩阵表示,前者节省空间适合稀疏图,后者便于检查连接但占用更多空间。文章详细展示了邻接表和邻接矩阵的实现,并讲解了深度优先搜索(DFS)和广度优先搜索(BFS)的遍历方法,帮助读者掌握图的基本操作和应用技巧。
13 4
下一篇
无影云桌面