UDF の作成

最終更新日: Nov 28, 2017

UDFについて

UDFはユーザー定義関数の略です。MaxComputeは、コンピューティング要件を満たすための多くの組み込み関数を提供します。異なるコンピューティングのニーズを満たすためにUDFを作成することもできます。UDFの使用法は、一般的な組み込み関数の使用法と似ています。Java UDFは、Javaを使用して実装されたUDFを指します。

大規模データプラットフォームにおける一般的なJava UDFの使用プロセスは、次の4つのステップで構成されています。(1)ローカル環境でJavaコードを準備してデバッグし、JARパッケージにコンパイルします。 (2)DataWorksでリソースを作成し、JARパッケージをアップロードします。 (3)DataWorksで関数を作成して登録し、その関数をJARリソースに関連付ける。 (4)Java UDFを使用する。詳細は次の図に示されています。

1

使用事例

小文字を変換するためのUDFを実装します。

ステップ1:コーディング

MaxCompute UDF frameworkの指示に従って、ローカルJava環境で機能的に実装するためのJavaコードを記述してください( UDF開発プラグインを追加する必要があります。)、それらをJARパッケージにコンパイルします。

この例のJavaコードは次のとおりです。コンパイルされたJARパッケージはmy_lower.jarです。

  1. package test_UDF;
  2. import com.aliyun.odps.udf.UDF;
  3. public class test_UDF extends UDF {
  4. public String evaluate(String s) {
  5. if (s == null) { return null; }
  6. return s.toLowerCase();
  7. }
  8. }

ステップ2:JARリソースを追加

UDFを実行する前に、参照するUDFコードを指定する必要があります。あなたが書いたJavaコードは、大きなデータプラットフォームにリソースとしてアップロードする必要があります。Java UDFはJARパッケージに組み込まれ、JARパッケージリソースとしてプラットフォームに追加されなければなりません。UDFフレームワークは自動的にJARパッケージをロードしてUDFを実行します。

特定の手順は次のとおりです。

  1. 開発者として Alibaba Cloud DTplusプラットフォーム> DataWorks>管理コンソールに移動します。対応するプロジェクトのアクションバーに作業領域を入力をクリックします。

    1

  2. リソースファイルを作成します。ファイルディレクトリツリーのフォルダを右クリックし、リソースのアップロードを選択してリソースをアップロードします。

  3. アップロードリソースポップアップウィンドウで設定を完了し、 Submit をクリックします。1

リソースは、送信が成功した後に正常に作成されます。

ステップ3:UDFを登録

これまでの手順では、Java UDFコードの作成とJARリソースのアップロードが完了しました。これにより、ビッグデータプラットフォームはユーザーコードを自動的に取得して実行できます。しかし、このUDFは、この時点で大きなデータ・プラットフォームでは利用できません。なぜなら、プラットフォームにはまだUDFに関する情報がないからです。したがって、プラットフォームに固有の関数名を登録し、関数名を特定のリソースの関数にマップする必要があります。

特定の手順は次のとおりです。

  1. 関数ディレクトリを作成します。ファイルディレクトリツリーの機能の管理に切り替えて、新しいディレクトリを作成します。

  2. ディレクトリフォルダを右クリックし、新しい機能を選択するか、右側の作業領域の右上隅にある New をクリックして、 New Function を選択します。

  3. Create MaxCompute関数のポップアップウィンドウで設定を完了し、 Submit をクリックします。

    1

この関数は、送信が成功した後で正常に作成されます。

ステップ4:MaxCompute SQLで関数をテスト

Java UDFの具体的な使用法は、プラットフォーム内の組み込み関数の使用法と同じです。特定の手順は次のとおりです。

  1. ワークゾーンの右上隅にある New をクリックし、 New Script File を選択してSQLスクリプトファイルを作成します。

  2. コードエディタでSQL文を記述します。

サンプルコード:

  1. select my_lower('A') from dual;
  1. 1ボタンをクリックします。

    1

ここまでJava UDFの登録を完了し、ローカル呼び出しテストをSQLで実行しました。小文字の変換を実行するために毎日のスケジューリングが必要な場合は、ワークフローで新しいMaxCompute SQLノードを作成し、ワークフローのスケジュール設定プロパティを設定します。