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学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
9天前
|
前端开发 API UED
Python后端与前端交互新纪元:AJAX、Fetch API联手,打造极致用户体验!
Python后端与前端交互新纪元:AJAX、Fetch API联手,打造极致用户体验!
37 2
|
16天前
|
消息中间件 资源调度 API
Apache Flink 流批融合技术介绍
本文源自阿里云高级研发工程师周云峰在Apache Asia Community OverCode 2024的分享,内容涵盖从“流批一体”到“流批融合”的演进、技术解决方案及社区进展。流批一体已在API、算子和引擎层面实现统一,但用户仍需手动配置作业模式。流批融合旨在通过动态调整优化策略,自动适应不同场景需求。文章详细介绍了如何通过量化指标(如isProcessingBacklog和isInsertOnly)实现这一目标,并展示了针对不同场景的具体优化措施。此外,还概述了社区当前进展及未来规划,包括将优化方案推向Flink社区、动态调整算子流程结构等。
279 31
Apache Flink 流批融合技术介绍
|
15天前
|
JSON API 数据格式
深入浅出:使用Python实现一个简单的RESTful API
【8月更文挑战第51天】本文将引导读者理解RESTful API的基本原理,并通过一个简易的实例展示如何利用Python的Flask框架快速搭建一个RESTful服务。文章以通俗易懂的语言,结合代码示例,逐步讲解API的设计、实现和测试过程,旨在帮助初学者掌握RESTful API的开发方法。
49 11
|
13天前
|
安全 API 开发者
Web 开发新风尚!Python RESTful API 设计与实现,让你的接口更懂开发者心!
在当前的Web开发中,Python因能构建高效简洁的RESTful API而备受青睐,大大提升了开发效率和用户体验。本文将介绍RESTful API的基本原则及其在Python中的实现方法。以Flask为例,演示了如何通过不同的HTTP方法(如GET、POST、PUT、DELETE)来创建、读取、更新和删除用户信息。此示例还包括了基本的路由设置及操作,为开发者提供了清晰的API交互指南。
55 6
|
12天前
|
存储 JSON API
实战派教程!Python Web开发中RESTful API的设计哲学与实现技巧,一网打尽!
在数字化时代,Web API成为连接前后端及构建复杂应用的关键。RESTful API因简洁直观而广受欢迎。本文通过实战案例,介绍Python Web开发中的RESTful API设计哲学与技巧,包括使用Flask框架构建一个图书管理系统的API,涵盖资源定义、请求响应设计及实现示例。通过准确使用HTTP状态码、版本控制、错误处理及文档化等技巧,帮助你深入理解RESTful API的设计与实现。希望本文能助力你的API设计之旅。
36 3
|
12天前
|
存储 前端开发 API
告别繁琐,拥抱简洁!Python RESTful API 设计实战,让 API 调用如丝般顺滑!
在 Web 开发的旅程中,设计一个高效、简洁且易于使用的 RESTful API 是至关重要的。今天,我想和大家分享一次我在 Python 中进行 RESTful API 设计的实战经历,希望能给大家带来一些启发。
27 3
|
13天前
|
JSON API 数据库
从零到英雄?一篇文章带你搞定Python Web开发中的RESTful API实现!
在Python的Web开发领域中,RESTful API是核心技能之一。本教程将从零开始,通过实战案例教你如何使用Flask框架搭建RESTful API。首先确保已安装Python和Flask,接着通过创建一个简单的用户管理系统,逐步实现用户信息的增删改查(CRUD)操作。我们将定义路由并处理HTTP请求,最终构建出功能完整的Web服务。无论是初学者还是有经验的开发者,都能从中受益,迈出成为Web开发高手的重要一步。
36 4
|
11天前
|
开发框架 JSON 缓存
震撼发布!Python Web开发框架下的RESTful API设计全攻略,让数据交互更自由!
在数字化浪潮推动下,RESTful API成为Web开发中不可或缺的部分。本文详细介绍了在Python环境下如何设计并实现高效、可扩展的RESTful API,涵盖框架选择、资源定义、HTTP方法应用及响应格式设计等内容,并提供了基于Flask的示例代码。此外,还讨论了版本控制、文档化、安全性和性能优化等最佳实践,帮助开发者实现更流畅的数据交互体验。
31 1
|
13天前
|
JSON API 开发者
惊!Python Web开发新纪元,RESTful API设计竟能如此性感撩人?
在这个Python Web开发的新纪元里,RESTful API的设计已经超越了简单的技术实现,成为了一种追求极致用户体验和开发者友好的艺术表达。通过优雅的URL设计、合理的HTTP状态码使用、清晰的错误处理、灵活的版本控制以及严格的安全性措施,我们能够让RESTful API变得更加“性感撩人”,为Web应用注入新的活力与魅力。
30 3
|
15天前
|
JSON API 数据格式
深度剖析!Python Web 开发中 RESTful API 的每一个细节,你不可不知的秘密!
在 Python Web 开发中,RESTful API 是构建强大应用的关键,基于 Representational State Transfer 架构风格,利用 HTTP 卞性能。通过 GET、POST、PUT 和 DELETE 方法分别实现资源的读取、创建、更新和删除操作。示例代码展示了如何使用 Flask 路由处理这些请求,并强调了状态码的正确使用,如 200 表示成功,404 表示未找到资源等。
38 5
下一篇
无影云桌面