本ページでは、IntelliJ IDEA を使用して Realtime Compute の UDX を開発する方法について説明します。これには、開発環境の構築や Realtime Compute ジョブでの UDX の参照が含まれます。
注
- 本ページの操作は、IntelliJ IDEA に基づいています。 はじめにツールをダウンロードしてインストールします。
- 現在、Realtime Compute は共有モードの UDX をサポートしていません。 UDX は、排他モードでのみサポートされています。
Maven のダウンロードと設定
- Maven をダウンロードします。
- Maven の公式ダウンロードページ にアクセスして、
apache-maven-3.5.3-bin.tar.gz
をダウンロードします。 - ダウンロードしたパッケージを、
/Users/xxx/Documents/maven
などの指定したディレクトリに解凍します。
- Maven の公式ダウンロードページ にアクセスして、
- 環境変数を設定します。
- ターミナルを開き、
vim ~/.bash_profile
コマンドを実行します。 .bash_profile
ファイルに、環境変数を設定するための次のコマンドを追加します。export M2_HOME=/Users/xxx/Documents/maven/apache-maven-3.5.3 export PATH=$PATH:$M2_HOME/bin
- 設定を保存して終了します。 次のコマンドを実行して、設定を有効にします。
source ~/.bash_profile
- ターミナルを開き、
- 設定が有効であることを確認します。
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"
開発環境の構築
- 開発環境の構築にアクセスして、デモパッケージ
RealtimeCompute-udxDemo.gz
をダウンロードします。 RealtimeCompute-udxDemo.gz
を Linux 環境で解凍します。tar xzvf RealtimeCompute-udxDemo.gz
- 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 パッケージへの圧縮
- ターミナルで、
mvn package
またはmvn assembly:assembly
コマンドを実行します。 必要なサードパーティパッケージを JAR パッケージに追加する必要がある場合は、後者のコマンドを使用します。 - コンパイルされた 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 の登録と使用