このトピックでは、Realtime Compute で開発環境を構築し、ユーザー定義拡張機能 (UDX) を使用する方法について説明します。
概要
Realtime Compute は、次の UDX をサポートしています。
- UDF
ユーザー定義関数 (UDF) は、1 つのレコードの 0、1、または複数のスカラー値を新しいスカラー値にマップします。
- UDAF
ユーザー定義の集計関数 (UDAF) は、複数のレコードを単一の値に集計します。
- UDTF
ユーザー定義テーブル関数 (UDTF) は、出力レコードを生成する前に複数のレコードを変換します。 出力レコードの数は、入力レコードの数と一致する必要はありません。 UDTF は、複数のフィールドを返すことができる唯一のタイプの UDX です。
開発環境の構築
UDX の開発は、Realtime Compute のいくつかの JAR パッケージに依存します。 開発環境の迅速な構築を支援するため、Alibaba Cloud
は UDX 開発デモ版 (RealtimeCompute-udxDemo.gz
) を提供しています。 デモは Maven プロジェクトです。 これを IntelliJ IDEA で開いて、このデモに基づいて UDX を開発することができます。
デモでは、参照用に 3 つのシンプルな UDX (UDF、UDAF、および UDTF) を実装しています。
デモは以下の JAR パッケージに依存します。 パッケージを個別に使用する必要がある場合は、対応するリンクをクリックしてダウンロードしてください。
pom. xml
ファイルを変更します。
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-core</artifactId>
<version>blink-2.2.4-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table_2.11</artifactId>
<version>blink-2.2.4-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java_2.11</artifactId>
<version>blink-2.2.4-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
UDX の登録と使用
UDX が開発されたら、それを JAR パッケージに圧縮します。 [開発] ページで、[アップロード] をクリックします。
JAR パッケージがアップロードされたら、ジョブを選択し、次のようにジョブで UDX を宣言します。
CREATE FUNCTION stringLengthUdf AS 'com.hjc.test.blink.sql.udx.StringLengthUdf';
- Realtime Compute コンソールにログインします。
- トップメニューで、[開発] をクリックします。
- 左側のナビゲーションウィンドウで、[リソース] をクリックします。
- [リソース] タブの [➕リソースの作成] をクリックします。
- リソース設定情報を入力します。
設定名 説明 アップロードモード 現時点では、ローカルでのアップロードのみがサポートされています。 リソース [リソースのアップロード] アイコンをクリックして、アップロードするリソースを選択します。 リソース名 リソース名を入力します。 リソースの説明 リソースの説明を入力します。 リソースタイプ アップロードするリソースの種類、JAR、DICTIONARY、または PYTHON を選択します。 - [リソース] タブで、マウスを [詳細] に合わせます。
- [参照] をクリックします。
- ジョブ編集ウィンドウの SQL クエリの上部に UDX 関数ステートメントを追加します。 例は以下のとおりです。
CREATE FUNCTION stringLengthUdf AS 'com.hjc.test.blink.sql.udx.StringLengthUdf';