关于 flink-udf
用于以 Java 为 Apache Flink 编写和部署自定义函数的开发技能,适合扩展 Flink SQL 或 Table API 的开发任务。它按函数类型和部署目标引导实现,并要求部署前确认执行计划。
主要功能
- 01区分 Scalar UDF、UDTF 与 PTF
- 02按 Confluent Cloud 或本地 Docker 选择指南
- 03指导生成代码、打包 JAR 和部署
- 04支持 Flink SQL 与 Table API 调用
- 05修改资源前要求用户确认计划
适用场景
- 01为 Flink SQL 添加自定义标量计算
- 02将输入拆分为多行输出
- 03实现带状态和定时器的表处理
- 04将函数部署并注册到 Flink
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ confluentinc/ agent-skills --skill flink-udf安装后在 Claude Code 中输入/flink-udf确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonreferences/confluent-cloud-setup.mddependencies-confluent-cloud.mddependencies-local.mdlocal-docker-setup.mdptf-java-confluent-cloud.mdptf-java-local.mdudf-udtf-java-confluent-cloud.mdudf-udtf-java-local.md详细介绍
Flink 用户定义函数(UDF)
用 Java 为 Apache Flink 构建和部署自定义函数,通过自定义逻辑扩展 SQL 和 Table API 的功能。
函数类型
继续操作前,先确定用户需要哪种类型的函数:
- 标量 UDF:将输入值映射为单个输出值(例如,自定义哈希、字符串处理、计算)
- 用户定义表函数(UDTF):将输入映射为多行输出(例如,拆分字符串、展开数组)
- 过程表函数(PTF):采用 N 对 M 语义、托管状态和计时器的高级有状态处理(例如,窗口计算、去重、状态机)
收集需求
向用户提出以下问题,以确定实现路径(如果上下文中尚不明确):
- 部署目标:Confluent Cloud 还是本地 Docker?
- 基础设施:部署新基础设施(Kafka + Flink)还是使用现有基础设施?
- 调用方式:Flink SQL 还是 Table API?
选择实现指南
根据上述回答,阅读相应的参考文件:
Confluent Cloud 部署
- 标量 UDF 或 UDTF → 阅读
references/udf-udtf-java-confluent-cloud.md - 过程表函数(PTF) → 阅读
references/ptf-java-confluent-cloud.md
如果需要设置基础设施,还要先阅读 references/confluent-cloud-setup.md。
本地 Docker 部署
- 标量 UDF 或 UDTF → 阅读
references/udf-udtf-java-local.md - 过程表函数(PTF) → 阅读
references/ptf-java-local.md
如果需要设置基础设施,还要先阅读 references/local-docker-setup.md。
实现工作流
阅读相应参考文件后:
- 设置基础设施(如有需要)
- 生成样板代码以实现函数
- 实现业务逻辑
- 构建并打包 JAR
- 与用户确认部署计划。 在进行任何会修改资源的调用(例如
confluent flink artifact create、将文件docker cp到运行中的容器、CREATE FUNCTION等)之前,先展示计划并等待用户明确批准。列出:- 工件名称和 JAR 路径
- 要注册的函数名称
- 目标环境(Confluent Cloud 环境 + 计算池 ID,或本地 Docker 容器名称)
- 将要运行的确切命令和 SQL 在用户确认前,不要继续执行第 6–7 步。
- 部署工件
- 在 Flink 中注册函数
- 使用示例数据测试函数
- 提供用法示例(SQL 或 Table API)
保持代码框架简洁,并聚焦于用户的具体需求。避免过度设计。
评论
支持 Markdown