flink-udf について
Java で Apache Flink のカスタム関数を開発、デプロイするためのスキルです。関数の種類とデプロイ先に応じて実装を案内し、リソースを変更する前に計画の確認を求めます。
主な機能
- 01Scalar UDF、UDTF、PTF の区別
- 02Confluent Cloud とローカル Docker 向けガイドの選択
- 03コード生成、JAR 化、デプロイの案内
- 04Flink SQL と Table API からの呼び出し
- 05リソース変更前の計画承認
活用シーン
- 01Flink SQL への独自スカラー計算の追加
- 02入力から複数の出力行への展開
- 03状態とタイマーを使うテーブル処理の実装
- 04Flink への関数のデプロイと登録
インストール
コマンドをコピーしてターミナルで実行します。
$
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)
Apache Flink 用のカスタム関数を Java で作成してデプロイし、カスタムロジックで 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 対応