すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:IntelliJ IDEA を使用した Java UDF の開発

最終更新日:Mar 18, 2026

このトピックでは、IntelliJ IDEA の MaxCompute Studio を使用して、Java ユーザー定義関数 (UDF) の作成、テスト、デプロイ、および呼び出しを行う方法について説明します。UDF は、データの各行で実行されるカスタムロジックで MaxCompute SQL を拡張します。このチュートリアルを完了すると、STRING 型の引数を受け取り、その小文字の文字列を返す Lower_test という名前のスカラー UDF が作成されます。

作成するもの

STRING 型の引数を受け取り、その小文字の文字列を返すスカラー UDF (Lower_test) です。完全なワークフローは、以下をカバーします。

  1. IntelliJ IDEA での Java クラスの作成
  2. ロジックを検証するためのローカルでの実行
  3. MaxCompute プロジェクトへの JAR のデプロイ
  4. SQL ステートメントでの UDF の呼び出し

型マッピングのリファレンス

evaluate() メソッドのシグネチャを設計する際は、次のように MaxCompute SQL 型を Java 型にマッピングします。

MaxCompute SQL 型 Java 型
STRING String
BIGINT Long
DOUBLE Double
BOOLEAN Boolean
DATETIME java.util.Date

前提条件

開始する前に、次のタスクを完了してください。

  1. MaxCompute Studio のインストール:IntelliJ IDEA 用の MaxCompute Studio プラグインをインストールします。MaxCompute Studio のインストール

  2. MaxCompute プロジェクトへの接続:UDF をデプロイする MaxCompute プロジェクトへの接続を確立します。MaxCompute プロジェクト接続の作成

  3. MaxCompute Java モジュールの作成:UDF の作成とコンパイルに必要な Java モジュール構造をセットアップします。MaxCompute Java モジュールの作成

操作手順

  1. Java で UDF を作成します。

    1. 左側のナビゲーションウィンドウで、[Project] タブをクリックします。src > main > java を展開し、java を右クリックして、[New] > [MaxCompute Java] を選択します。

      新建Java Class

    2. [Create new MaxCompute java class] ダイアログボックスで、[UDF] をクリックします。[Name] フィールドにクラスの名前を入力し、Enter キーを押します。

      选择类型填写名称

      [Name] は、作成する MaxCompute Java クラスの名前を指定します。パッケージを作成していない場合は、packagename.classname と入力してパッケージを自動的に生成できます。

      :パッケージを作成していない場合は、packagename.classname のフォーマットで名前を入力します。システムによってパッケージが自動的に生成されます。

    3. 生成された Java ファイルに、UDF ロジックを実装します。次の例は、文字列を小文字に変換する UDF を示しています。

      代码编辑区域

      package <packagename>;
      import com.aliyun.odps.udf.UDF;          // すべての MaxCompute UDF に必要な基底クラス
      
      public final class Lower extends UDF {   // スカラー関数の場合は UDF を継承する必要があります
      
          // evaluate() は各行に対して呼び出されるエントリーポイントです。
          // パラメーターと戻り値の型は MaxCompute SQL 型 (String -> STRING) にマッピングされます。
          public String evaluate(String s) {
              if (s == null) {                 // 実行時エラーを回避するために、常に NULL 入力を処理します
                  return null;
              }
              return s.toLowerCase();
          }
      }

      <packagename> を実際のパッケージ名 (例:com.example) に置き換えてください。

  2. UDF をローカルでデバッグします。

    デプロイ前に MaxCompute テーブルに対して UDF をローカルで実行し、ロジックを検証します。

    1. java ディレクトリで、Java ファイルを右クリックし、[Run] を選択します。

    2. [Run/Debug Configurations] ダイアログボックスで、次のフィールドを設定します。

      debug

      • MaxCompute project:UDF が実行される MaxCompute プロジェクト。ドロップダウンリストから local を選択すると、クラスターに送信せずにローカルで実行されます。

      • MaxCompute table:ローカル実行の入力データを提供する MaxCompute テーブルの名前。

      • Table columns:UDF が操作する MaxCompute テーブルの列。

    3. [OK] をクリックします。UDF がローカルで実行され、戻り結果が出力パネルに表示されます。

      ヒント:ローカルでの実行が成功すると、evaluate() メソッドが入力型と NULL 値を正しく処理していることが確認できます。デプロイに進む前に、エラーを修正してください。

  3. UDF を MaxCompute にデプロイします。

    ローカルテストに合格したら、UDF をパッケージ化して登録し、SQL で使用できるようにします。

    1. UDF の Java ファイルを右クリックし、[Deploy to Server...] を選択します。

    2. [Package a jar, submit resource and register function] ダイアログボックスで、次のフィールドを設定します。

      • MaxCompute project:デプロイ先のプロジェクト。デフォルト値は、UDF の作成時に接続したプロジェクトを反映しています。別のプロジェクトを対象としない限り、デフォルト値を保持してください。

      • Resource file:JAR リソースファイルのパス。デフォルト値を保持してください。

      • Resource name:MaxCompute に登録されるリソースの名前。デフォルト値を保持してください。

      • Function name:SQL ステートメントで UDF を呼び出すために使用される名前。Lower_test と入力します。

      警告[Function name] の値は、SQL クエリで使用する名前です。MaxCompute の組み込み関数と競合する名前は避けてください。競合が存在する場合、カスタム UDF が組み込み関数をシャドウイングしたり、オーバーライドに失敗したりする可能性があります。

    3. [OK] をクリックします。MaxCompute Studio はコードを JAR にパッケージ化し、リソースとしてアップロードし、選択したプロジェクトに Lower_test を関数として登録します。

  4. SQL で UDF を呼び出します。

    1. 左側のナビゲーションウィンドウで、[Project Explorer] タブに移動します。

    2. ご利用の MaxCompute プロジェクトを右クリックし、[Open in Console] を選択します。

    3. コンソールで、次の SQL ステートメントを入力し、Enter キーを押します。

      select Lower_test('ALIYUN');

      调用UDF

    4. 出力を確認します。次の結果が返され、Lower_test Java UDF が正しく機能していることを示します。

      期待される出力:
      +------------+
      | _c0        |
      +------------+
      | aliyun     |
      +------------+

トラブルシューティング

症状 考えられる原因 解決方法
ClassNotFoundException(デプロイ後) JAR ファイルが正しいプロジェクトにアップロードされていない デプロイダイアログボックスの MaxCompute プロジェクト フィールドが目的のプロジェクトを指していることを確認し、再度デプロイします。
Permission denied 権限が不十分 ご利用のアカウントが対象の MaxCompute プロジェクトに対して CreateFunction 権限を持っていることを確認してください。
NullPointerException evaluate() 入力パラメーターに対する操作の前に、if (s == null) { return null; } のチェックを追加します。
SQL で関数名が解決されない 異なる名前で関数が登録されている MaxCompute プロジェクトの関数リストで登録済みの名前を確認し、SQL 呼び出しを登録名と一致させてください。

次のステップ

Java UDF のデプロイとテストが正常に完了したら、次のことができます。

  • 他の UDF 型の開発:より高度なユースケースのために、UDAF (ユーザー定義集計関数) と UDTF (ユーザー定義テーブル値関数) を探求します。

  • UDF パフォーマンスの最適化evaluate() 内のオブジェクトアロケーションを最小限に抑えるなど、UDF パフォーマンスに関する MaxCompute のベストプラクティスを確認します。

  • プロジェクト間での UDF の共有:同じリソースファイルを複数の MaxCompute プロジェクトに登録して、再デプロイせずに UDF を再利用します。