更新时间:2026-07-28 GMT+08:00
分享

概述

功能描述

Remote UDTF(Remote User-Defined Table-Generating Function)为用户自定义表值函数,适用于单进多出业务场景。即其输入与输出是一对多的关系,读入一行数据,输出多个值可视为一张表。

本节内容以FunctionGraph作为Remote UDTF 的执行载体,介绍开发Remote UDTF到计算引擎调用的操作步骤。

方案优势

Remote UDTF的优势在于风险隔离、资源解耦与成本优化。

  • 风险隔离:当关键生产环境需要执行UDTF时,虽然技术上支持,但存在执行风险。

    通过Remote UDTF将计算逻辑卸载到函数工作流FunctionGraph,既能保持业务功能,又能通过无服务器架构实现风险隔离。

  • 资源解耦:对于大模型推理等计算密集型任务,为避免在Spark等集群中长期占用昂贵资源,兼顾功能需求、稳定性和成本效益,将计算密集型操作剥离至FunctionGraph执行
  • 成本优化:Remote UDTF将default队列还原为纯数据通道,消除UDTF引发的风险,使其能为用户提供更经济,更安全的核心数据流服务。

约束与限制

Remote UDTF只对单行数据产生作用,适用于单进单出的场景。

环境准备

使用FunctionGraph开发调试Remote UDTF时,您需要先安装IDEA并配置Maven,下载依赖JAR包并配置FunctionGraph服务,做好Remote UDTF开发前准备工作。

表1 UDTF开发环境

准备项

说明

操作系统

Windows系统,支持Windows7以上版本。

安装JDK

JDK使用1.8版本。

安装和配置IntelliJ IDEA

IntelliJ IDEA为进行应用开发的工具,版本要求使用2019.1或其他兼容版本。

安装Maven

开发环境的基本配置。用于项目管理,贯穿软件开发生命周期。

下载依赖JAR包

依赖引入下载Jar包:spark-function-sdk_2.13-jar-with-dependencies.jar

获取方式:从https://repo.huaweicloud.com/repository/maven/huaweicloudsdk/地址下载。

UDTF与Remote UDTF的对比

  • UDTF:适合对性能要求高且熟悉查询引擎开发语言的场景。执行效率高,但开发灵活性和安全性相对较低。
  • Remote UDTF:适合需要调用外部服务、使用多种语言开发或对开发语言灵活性要求高的场景。具有较高的安全性和开发灵活性。
表2 UDTF与Remote UDTF的对比

特性

UDTF

Remote UDTF

执行方式

在查询引擎本地执行

通过调用函数托管服务执行

安全性

若UDTF代码不稳定,可能影响查询引擎进程

执行失败仅影响UDTF自身,不会导致整体作业进程。

性能

执行效率高

但在向量化和批处理模式下,性能与本地UDTF相当

开发灵活性

与查询引擎代码耦合度高,开发限制较多

灵活,可调用任意其他服务或程序库,满足多样业务需求

开发成本

需熟悉查询引擎的开发环境和语言,开发成本较高

一次性开发投入,开发成本相对较低

适用场景

对性能要求极高的场景,且开发团队熟悉查询引擎的开发语言

对开发语言灵活性要求高、需要调用外部服务或程序库的场景

相关文档