概述
功能描述
Remote UDTF(Remote User-Defined Table-Generating Function)为用户自定义表值函数,适用于单进多出业务场景。即其输入与输出是一对多的关系,读入一行数据,输出多个值可视为一张表。
本节内容以FunctionGraph作为Remote UDTF 的执行载体,介绍开发Remote UDTF到计算引擎调用的操作步骤。
方案优势
Remote UDTF的优势在于风险隔离、资源解耦与成本优化。
约束与限制
Remote UDTF只对单行数据产生作用,适用于单进单出的场景。
环境准备
使用FunctionGraph开发调试Remote UDTF时,您需要先安装IDEA并配置Maven,下载依赖JAR包并配置FunctionGraph服务,做好Remote 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:适合需要调用外部服务、使用多种语言开发或对开发语言灵活性要求高的场景。具有较高的安全性和开发灵活性。
| 特性 | UDTF | Remote UDTF |
|---|---|---|
| 执行方式 | 在查询引擎本地执行 | 通过调用函数托管服务执行 |
| 安全性 | 若UDTF代码不稳定,可能影响查询引擎进程 | 执行失败仅影响UDTF自身,不会导致整体作业进程。 |
| 性能 | 执行效率高 | 但在向量化和批处理模式下,性能与本地UDTF相当 |
| 开发灵活性 | 与查询引擎代码耦合度高,开发限制较多 | 灵活,可调用任意其他服务或程序库,满足多样业务需求 |
| 开发成本 | 需熟悉查询引擎的开发环境和语言,开发成本较高 | 一次性开发投入,开发成本相对较低 |
| 适用场景 | 对性能要求极高的场景,且开发团队熟悉查询引擎的开发语言 | 对开发语言灵活性要求高、需要调用外部服务或程序库的场景 |