pyflink中UDTF和UDF的区别

ops/2024/10/21 1:31:22/

UDTF(User Defined Table-Valued Functions)和UDF(User Defined Functions)在Flink和其他数据处理系统中有着明显的区别,主要体现在以下几个方面:

输出类型:

  1. UDF
    • UDF是用户定义的标量函数。
    • 它接收一个或多个标量值作为输入,并返回一个标量值作为输出。
  2. UDTF
    • UDTF是用户定义的表值函数。
    • 它接收一个或多个标量值作为输入,但可以返回多行数据(即多个标量值的组合)作为输出。

使用场景:

  1. UDF
    • 适用于需要处理并返回单个结果的场景,例如,计算字符串长度、进行数学运算等。
  2. UDTF
    • 适用于需要将单个输入拆分成多个输出的场景,例如,解析复杂的数据结构、将字符串拆分成单词等。

如何定义:

  1. UDF
    • UDF通常通过定义一个类并实现一个或多个方法(例如eval)来创建。
    • 输出结果通过return语句返回。
  2. UDTF
    • UDTF也是通过定义一个类来创建,但需要实现eval方法。
    • 输出结果通过yield语句产生,而不是return

输出数据的结构:

  1. UDF
    • 输出是一个标量值,其类型在定义UDF时指定。
  2. UDTF
    • 输出是一个表(或行的集合),其结构(schema)在定义UDTF时指定。

示例:

UDF示例

from pyflink.table import DataTypes
from pyflink.table.udf import udf
@udf(result_type=DataTypes.INT())
def length_udf(s: str) -> int:return len(s)

UDTF示例

from pyflink.table import DataTypes
from pyflink.table.udf import udtf
@udtf(output_types=[DataTypes.INT(), DataTypes.STRING()])
class SplitStringUDTF:def eval(self, string):for i, c in enumerate(string):yield i, c

总结来说,UDF和UDTF的主要区别在于它们的输出类型和使用场景。UDF返回单个标量值,而UDTF返回多行数据。这使得UDTF在处理需要拆分和转换数据为多行结果的情况时非常有用。


http://www.ppmy.cn/ops/103895.html

相关文章

【hot100篇-python刷题记录】【跳跃游戏】

R6-贪心算法 符合贪心的原因是: 我们要走到最后可以每次都选择尽可能远的来走,其次,能走到该步意味着该步以前都能到达。因此,局部最优解可以代表全局最优解。 class Solution:def canJump(self, nums: List[int]) -> bool:#最…

简易STL实现 | Deque的实现

一种 在内存中存储元素的数据结构,它支持 在两端添加和删除元素(使用循环数组实现) 1、deque的特性(分段deque实现) 1、双端操作: deque支持在前端和后端执行快速的插入和删除操作 2、随机访问&#xff…

深度学习100问31:如何降低语言模型的困惑度

嘿,想让语言模型的困惑度降低,有几个好办法哦。 首先呢,可以多给它找点“学习资料”,也就是增加训练数据量。这就像一个学生,读的书越多,学到的知识就越多,就越聪明。语言模型有了大量的文本数…

mac/windows 软件推荐

推荐一些这么多年mac/windows 平台搜集使用下来比较好用,提升效率的软件 mac: 超级右键:快捷操作Bob:快捷翻译软件cleanmymac x:清洁软件compressor:压缩文件keka:压缩解压缩包mos&#xff1a…

Eureka与Ribbon的协作:实现客户端负载均衡的详细指南

Eureka与Ribbon的协作:实现客户端负载均衡的详细指南 引言 在现代微服务架构中,负载均衡是保证系统高可用性和性能的重要技术之一。随着服务实例的数量和动态变化,如何高效地分发请求成为一个关键问题。Spring Cloud提供了Eureka和Ribbon这…

将单元格中的单引号隐藏,但是并不删除,用于从txt中复制到excel中直接将数字内容改为文本显示,刷新内容

将单元格中的单引号隐藏,但是并不删除,用于从txt中复制到excel中直接将数字内容改为文本显示,刷新内容 Sub HideLeadingSingleQuote() 将单元格中的单引号隐藏,但是并不删除,用于从txt中复制到excel中直接将数字内容改…

【GD32】从零开始学GD32单片机 | USB通用串行总线接口+HID键盘例程(GD32F470ZGT6)

1. 简介 USB,全称通用串行总线,相信大家都非常熟悉了,日常生活只要用到手机电脑都离不开这个接口,像鼠标键盘U盘都需要使用这个接口进行数据传输,下面简单介绍一下。 1.1 版本标准 USB的标准总体可以分为低速、全速和…

重塑PDF编辑体验:最新在线工具深度评测

现在用PDF的场景多了,随之而来的加速了PDF编辑、转换工具的飞速发展,很多时候因为便捷大家更喜欢使用在线的工具。今天我就分享几款pdf在线编辑工具提高你文档处理效率。 1.福昕PDF编辑器 链接一下>>https://editor.foxitsoftware.cn 在沉浸阅…