mcpField
F
flink-udf

flink-udf

github.com/confluentinc数据与数据库59109 次安装1 天前更新
代码仓库

关于 flink-udf

用于以 Java 为 Apache Flink 编写和部署自定义函数的开发技能,适合扩展 Flink SQL 或 Table API 的开发任务。它按函数类型和部署目标引导实现,并要求部署前确认执行计划。

主要功能

  1. 01区分 Scalar UDF、UDTF 与 PTF
  2. 02按 Confluent Cloud 或本地 Docker 选择指南
  3. 03指导生成代码、打包 JAR 和部署
  4. 04支持 Flink SQL 与 Table API 调用
  5. 05修改资源前要求用户确认计划

适用场景

  1. 01为 Flink SQL 添加自定义标量计算
  2. 02将输入拆分为多行输出
  3. 03实现带状态和定时器的表处理
  4. 04将函数部署并注册到 Flink

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/confluentinc/agent-skills --skill flink-udf

安装后在 Claude Code 中输入/flink-udf确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

evals/
evals.json
references/
confluent-cloud-setup.md
dependencies-confluent-cloud.md
dependencies-local.md
local-docker-setup.md
ptf-java-confluent-cloud.md
ptf-java-local.md
udf-udtf-java-confluent-cloud.md
udf-udtf-java-local.md

详细介绍

Flink 用户定义函数(UDF)

用 Java 为 Apache Flink 构建和部署自定义函数,通过自定义逻辑扩展 SQL 和 Table API 的功能。

函数类型

继续操作前,先确定用户需要哪种类型的函数:

  • 标量 UDF:将输入值映射为单个输出值(例如,自定义哈希、字符串处理、计算)
  • 用户定义表函数(UDTF):将输入映射为多行输出(例如,拆分字符串、展开数组)
  • 过程表函数(PTF):采用 N 对 M 语义、托管状态和计时器的高级有状态处理(例如,窗口计算、去重、状态机)

收集需求

向用户提出以下问题,以确定实现路径(如果上下文中尚不明确):

  1. 部署目标:Confluent Cloud 还是本地 Docker?
  2. 基础设施:部署新基础设施(Kafka + Flink)还是使用现有基础设施?
  3. 调用方式: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。

实现工作流

阅读相应参考文件后:

  1. 设置基础设施(如有需要)
  2. 生成样板代码以实现函数
  3. 实现业务逻辑
  4. 构建并打包 JAR
  5. 与用户确认部署计划。 在进行任何会修改资源的调用(例如 confluent flink artifact create、将文件 docker cp 到运行中的容器、CREATE FUNCTION 等)之前,先展示计划并等待用户明确批准。列出:
    • 工件名称和 JAR 路径
    • 要注册的函数名称
    • 目标环境(Confluent Cloud 环境 + 计算池 ID,或本地 Docker 容器名称)
    • 将要运行的确切命令和 SQL 在用户确认前,不要继续执行第 6–7 步。
  6. 部署工件
  7. 在 Flink 中注册函数
  8. 使用示例数据测试函数
  9. 提供用法示例(SQL 或 Table API)

保持代码框架简洁,并聚焦于用户的具体需求。避免过度设计。

评论

支持 Markdown