本ページでは、IntelliJ IDEA を使用して Realtime Compute の UDX を開発する方法について説明します。これには、開発環境の構築や Realtime Compute ジョブでの UDX の参照が含まれます。

  • 本ページの操作は、IntelliJ IDEA に基づいています。 はじめにツールをダウンロードしてインストールします。
  • 現在、Realtime Compute は共有モードの UDX をサポートしていません。 UDX は、排他モードでのみサポートされています。

Maven のダウンロードと設定

  1. Maven をダウンロードします。
    1. Maven の公式ダウンロードページ にアクセスして、apache-maven-3.5.3-bin.tar.gz をダウンロードします。
    2. ダウンロードしたパッケージを、/Users/xxx/Documents/maven などの指定したディレクトリに解凍します。
  2. 環境変数を設定します。
    1. ターミナルを開き、vim ~/.bash_profile コマンドを実行します。
    2. .bash_profile ファイルに、環境変数を設定するための次のコマンドを追加します。
      export M2_HOME=/Users/xxx/Documents/maven/apache-maven-3.5.3
      export PATH=$PATH:$M2_HOME/bin
    3. 設定を保存して終了します。 次のコマンドを実行して、設定を有効にします。source ~/.bash_profile
  3. 設定が有効であることを確認します。

    mvn -v コマンドを実行します。 同様の出力が表示される場合は、設定が有効になっています。

    Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713****; 2017-04-04T03:39:06+08:00)
    Maven home: /Users/xxx/Documents/maven/apache-maven-3.5.0
    Java version: 1.8.0_121, vendor: Oracle Corporation
    Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre
    Default locale: zh_CN, platform encoding: UTF-8
    OS name: "mac os x", version: "10.12.6", arch: "x86_64", family: "mac"

開発環境の構築

  1. 開発環境の構築にアクセスして、デモパッケージ RealtimeCompute-udxDemo.gz をダウンロードします。
  2. RealtimeCompute-udxDemo.gz を Linux 環境で解凍します。
    tar xzvf RealtimeCompute-udxDemo.gz
    					
  3. IntelliJ IDEA を開いて、[開く] をクリックしてデモを開きます。

パッケージの作成

プロセスは次の図に示すとおりです。
この例では、次の図に示すように、com.hjc.test.blink.sql.udx パッケージが作成されます。

クラスの作成

プロセスは次の図に示すとおりです。

テストコードのクラスへの貼り付け

次の UDX サンプルコードをコピーしてクラスに貼り付けます。

package com.hjc.test.blink.sql.udx;

import org.apache.flink.table.functions.FunctionContext;
import org.apache.flink.table.functions.ScalarFunction;

public class StringLengthUdf extends ScalarFunction {
    // The open method is optional.
    // To write the open method, you must import org.apache.flink.table.functions.FunctionContext.
    @Override
    public void open(FunctionContext context) {
        }
    public long eval(String a) {
        return a == null ? 0 : a.length();
    }
    public long eval(String b, String c) {
        return eval(b) + eval(c);
    }
    // The close method is optional.
    @Override
    public void close() {
        }
}
			

プロジェクトの JAR パッケージへの圧縮

  1. ターミナルで、mvn package または mvn assembly:assembly コマンドを実行します。 必要なサードパーティパッケージを JAR パッケージに追加する必要がある場合は、後者のコマンドを使用します。
  2. コンパイルされた JAR パッケージは RealtimeCompute-udxDemo/target/RTCompute-udx-1.0-SNAPSHOT.jar または RealtimeCompute-udxDemo/target/RTCompute-udx-1.0-SNAPSHOT-jar-with-dependencies.jar です(必要なサードパーティパッケージを含む)。

Realtime Compute ジョブでの JAR パッケージの参照

参照: UDX の登録と使用