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

DataWorks:EMR 関数の作成

最終更新日:Mar 26, 2026

DataWorks DataStudio でカスタム Java ユーザー定義関数 (UDF) を登録し、E-MapReduce (EMR) クラスターの SQL 機能を拡張します。登録後、EMR SQL ステートメントで関数名を指定して関数を呼び出します。

前提条件

開始する前に、以下を確認してください。

  • Alibaba Cloud EMR クラスターのセキュリティグループに次のインバウンドルールが追加されていること。

    [Field]
    ActionAllow
    Protocol typeCustom TCP
    Port range8898/8898
    Authorization object100.104.0.0/16
    このセキュリティグループルールにより、DataWorks はご利用の EMR クラスターに接続できます。セキュリティグループルールの変更権限がない場合は、クラスター管理者にお問い合わせください。
  • お使いのワークスペースに関連付けられた EMR コンピュートエンジンインスタンスです。[EMR] フォルダは、[ワークスペース管理] ページでこの関連付けを完了した後にのみ DataStudio に表示されます。詳細については、「ワークスペースの作成と管理」をご参照ください。

  • 必要な JAR リソースが DataWorks にアップロード済みであること。詳細については、「EMR リソースの作成および使用」をご参照ください。

関数の作成

ステップ 1: DataStudio を開く

DataWorks コンソールにログインします。DataWorks コンソールの上部ナビゲーションバーで、リージョンを選択します。左側ナビゲーションウィンドウで、[データ開発およびガバナンス] > [データ開発] を選択します。ドロップダウンリストからワークスペースを選択し、[データ開発へ移動] をクリックします。

ステップ 2: ワークフローを作成する

関数ノードを整理するために、自動トリガーされるワークフローを作成します。詳細については、「自動トリガーされるワークフローの作成」をご参照ください。

ステップ 3: JAR パッケージを準備する

Java で UDF ロジックを記述し、JAR ファイルとしてパッケージ化し、JAR リソースとして DataWorks にアップロードします。

以下は、文字列を小文字に変換する最小限の Java UDF の例です。

import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

public class ToLowerUDF extends UDF {
    public Text evaluate(Text input) {
        if (input == null) return null;
        return new Text(input.toString().toLowerCase());
    }
}

Maven を使用してクラスを JAR ファイルとしてパッケージ化します。

mvn clean package -DskipTests

次に、結果の JAR ファイルを JAR リソースとして DataWorks にアップロードします。詳細については、「EMR リソースの作成および使用」をご参照ください。

ステップ 4: 関数ノードを作成する

  1. ビジネスフロー」セクションで、ワークフローをクリックして展開します。[EMR] を右クリックし、「ソリューションの作成」を選択します。

  2. [関数の作成] ダイアログボックスで、[名前][エンジンインスタンス]、および[パス] を設定し、[作成] をクリックします。

  3. 「構成」タブの[関数情報]セクションで、次のパラメーターを設定します。

    パラメーター説明
    関数タイプ関数のカテゴリです。有効な値:数学演算関数集計関数文字列処理関数日付関数ウィンドウ関数その他の関数。UDF (ユーザー定義関数) が計算する内容に基づいて選択します。例えば、テキスト変換ロジックの場合は 文字列処理関数 を選択します。
    エンジンインスタンスワークスペースに関連付けられている EMR クラスターです。デフォルトでは、エンジンインスタンスを変更することはできません。
    エンジンタイプコンピュートエンジンのタイプです。デフォルトでは、エンジンタイプを変更することはできません。
    EMR データベース関数が登録されている EMR クラスター内のデータベースです。ドロップダウンリストから 1 つ選択します。データベースを作成するには、[新しいライブラリ] をクリックし、必須フィールドを入力してから [OK] をクリックします。
    関数名SQL ステートメントで関数を呼び出すために使用される名前です。グローバルに一意である必要があり、作成後に変更することはできません。例:to_lower
    所有者自動的に設定されます。
    クラス名必須。関数を実装するクラスの名前です。
    リソース必須。UDF クラスを含む JAR リソースです。現在のワークスペースからリソースを選択するか、[リソースの作成] をクリックして新しいリソースをアップロードします。
    説明関数の説明です。例:文字列を小文字に変換します。
    式の構文関数の呼び出し構文です。例:to_lower(col_name)
    パラメーターの説明入力パラメーターと出力パラメーターの説明です。例:input: STRING col_name, output: STRING
    戻り値任意。戻り値です。例:1
    (任意) 関数の呼び出し方法を示す SQL ステートメントのサンプルです。例:SELECT to_lower(name) FROM my_table LIMIT 10;

    Function information section

ステップ 5: 関数を保存する

上部ツールバーの Save アイコンをクリックして、構成を保存します。

ステップ 6: 関数をコミットする

  1. 上部ツールバーの Commit アイコンをクリックします。

    EMR 関数をコミットする際は、スケジューリング用のリソースグループを選択する必要があります。専用スケジューリングリソースグループを使用することを推奨します。専用リソースグループが利用できない場合は、購入して構成できます。詳細については、「専用スケジューリングリソースグループの作成および使用」をご参照ください。
  2. [コミットノード] ダイアログボックスで、[変更内容] フィールドにコメントを入力します。

  3. [OK] をクリックします。

ステップ 7: UDF をコミットする

  1. 上部ツールバーの Commit アイコンをクリックします。

  2. [ノードのコミット] ダイアログボックスで、[変更の説明] フィールドにコメントを入力します。

  3. [OK] をクリックします。