SQL デプロイメントで UDF を使用するには、UDF を登録する必要があります。このトピックでは、UDF の登録、更新、削除の方法について説明します。
事前準備
-
RAM ユーザーまたは RAM ロールが UDF を管理する必要がある場合は、対象の名前空間にアクセスするための権限が付与されていることを確認してください。詳細については、「開発コンソールでの権限付与」をご参照ください。
-
UDF の開発時に JAR ファイルの依存関係の競合を避けるために、以下のガイドラインに従ってください。
-
開発ページで選択した Flink のバージョンが、POM 依存関係の Flink のバージョンと一致していることを確認してください。
-
Flink 関連の依存関係については、
<scope>provided</scope>を追加して、スコープを provided に設定してください。 -
Apache Maven Shade Plugin を使用して、他のサードパーティの依存関係をパッケージ化してください。詳細については、「Apache Maven Shade Plugin」をご参照ください。
説明Flink の依存関係の競合に関する詳細については、「Flinkの依存関係の競合をトラブルシューティングする方法」をご参照ください。
-
UDF の登録
カタログ UDF
-
UDF 登録ページに移動します。
-
対象のワークスペースの [Actions] 列で、[Console] をクリックします。
-
左側のナビゲーションペインで、 をクリックします。
-
[Functions] タブをクリックします。
-
[Register UDF] をクリックします。
-
UDF の JAR ファイルをアップロードします。
UDF の JAR ファイルは、以下のいずれかの方法でアップロードできます。
-
[ファイルのアップロード]:[Select a file] フィールドの横にある [Select a file] をクリックして、UDF アーティファクトを選択します。UDF に依存関係がある場合は、[Dependency File] フィールドの横にある [Select a file] をクリックして、必要なファイルをアップロードします。
説明-
UDF ファイルは、選択した OSS バケットの sql-artifacts ディレクトリにアップロードされます。
-
Java UDF の場合、依存関係は UDF の JAR ファイルにパッケージ化するか、個別にアップロードできます。Python UDF の場合は、依存関係を個別にアップロードすることを推奨します。
-
-
[外部 URL]:別のサービスの UDF ファイルを使用するには、その外部 URL を指定します。
説明サポートされている外部 URL は、次の 2 種類のみです。
Flink ワークスペースの作成時に選択した OSS バケットの URL。アタッチされた OSS バケットは、Realtime Compute for Apache Flink コンソール の [ワークスペース詳細] ページで確認できます。
Realtime Compute for Apache Flink がアクセス権限 (公開読み取りまたは付与された権限) を持つ別の外部ストレージシステムの URL。
-
-
[OK] をクリックします。
-
[Available Functions] ページで、登録する UDF を選択し、[Create Function] をクリックします。
開発コンソールはアーティファクトファイルを解析し、Flink の UDF、UDAF、UDTF インターフェイスを使用するクラスを識別し、関数名フィールドにクラス名を自動的に入力します。UDF が登録されると、[Functions] リストで確認できます。登録された各 UDF の左側に、黄色の「fx」アイコンが表示されます。
説明カタログ UDF を登録すると、デフォルトで最新の Flink バージョンが解析に使用されます。SQL デプロイメントで古いエンジンバージョンを使用している場合、互換性の問題が発生する可能性があります。この問題を解決するには、必要なエンジンバージョンに基づいて UDF コードを実装し、デプロイメントレベルの UDF として登録してください。詳細については、「デプロイメントレベルのUDF」をご参照ください。
デプロイメントレベルの UDF
-
デプロイメントレベルの Python UDF は、VVR 8.0.3 以降でのみサポートされています。
-
デプロイメントレベルの Python UDF を使用する場合、デプロイメントパラメーターで
python.filesやpython.archivesなどのパラメーターを使用して依存関係ファイルを設定できます。 -
デプロイメントレベルの Python UDF を使用する場合、構文チェックはサポートされません。デプロイメントを開始するときは、構文チェックをスキップする必要があります。
デプロイメントレベルの UDF を登録するには、次の手順に従ってください。
-
UDF の JAR ファイルまたは Python ファイルをアップロードします。
左側のナビゲーションペインで、[Artifacts] に移動し、UDF の JAR ファイルまたは Python ファイルをアップロードします。
-
デプロイメントでデプロイメントレベルの UDF を指定します。
デプロイメントの [Additional Dependencies] セクションで、UDF の JAR ファイルまたは Python ファイルを指定します。
-
デプロイメントレベルの UDF を登録します。
-
Java UDF
CREATE TEMPORARY FUNCTION yourfunctionname; -
Python UDF
CREATE TEMPORARY FUNCTION yourfunctionname LANGUAGE Python;
-
UDF の更新
新しい UDF を追加したり、既存の UDF を変更した後に UDF の JAR ファイルを更新するには、次の手順に従ってください。
-
UDF 登録ページに移動します。
-
対象のワークスペースの [Actions] 列で、[Console] をクリックします。
-
左側のナビゲーションペインで、 をクリックします。
-
[Functions] タブをクリックします。
-
[Functions] リストで、対象の UDF 名にカーソルを合わせ、
アイコンをクリックします。 -
UDF の JAR ファイルをアップロードします。[Update UDF JAR] ダイアログボックスで、[Upload a file] または [External URL] のいずれかの方法を選択し、[Select a file] および [Dependency File] フィールドを設定して、[Modify] をクリックします。
重要-
新しい UDF の JAR ファイルには、現在登録されているすべての UDF のクラスが含まれている必要があります。
-
新しい UDF の JAR ファイルの変更は、新規または再起動されたデプロイメントに対してのみ有効になります。実行中のデプロイメントは、再起動されるまで古いファイルを使用し続けます。
-
-
[Modify] をクリックします。
UDF の削除
UDF の JAR ファイルを削除する前に、そこから登録された UDF を参照しているデプロイメントや SQL ファイルがないことを確認してください。
UDF の JAR ファイルを削除するには、次の手順に従ってください。
-
UDF 登録ページに移動します。
-
対象のワークスペースの [Actions] 列で、[Console] をクリックします。
-
左側のナビゲーションペインで、 をクリックします。
-
[Functions] タブをクリックします。
-
[Functions] リストで、対象の UDF 名にカーソルを合わせ、
アイコンをクリックします。 -
[Delete all functions and the associated file] チェックボックスをオンにします。
データの不整合を避けるため、UDF の JAR ファイルを削除する場合は、そのファイルから登録されたすべての UDF も削除する必要があります。
-
[OK] をクリックします。
関連トピック
-
JAR ベースの UDF の種類、パラメーターの受け渡し、使用方法、デモについては、「Java UDF」および「UDAF」をご参照ください。
-
Python UDF の種類、依存関係の管理、デバッグ、チューニング、使用方法、デモについては、「Python UDF」および「UDAF」をご参照ください。