MaxCompute には、ユーザーのコンピューティングに関する要求を満たす数多くの組み込み関数が実装されています。
ユーザー定義関数 (UDF) は、他の組み込み関数と似ています。 Java と MaxCompute のデータ型の対応関係については、「パラメーターと戻り値のデータ型」をご参照ください。
Maven をご使用の場合は、Maven で「odps-sdk-udf」を検索すると、Java SDK の各種バージョンを入手できます。設定は、以下のとおりです。
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-sdk-udf</artifactId>
<version>0.29.10-public</version>
</dependency>
MaxCompute では、次の 2 種類の UDF を拡張できます。
UDF クラス | 説明 |
---|---|
UDF (ユーザー定義スカラー関数) | ユーザー定義スカラー関数。 入力と出力の関係は 1 対 1 です。 1 行データを読み込み、出力値を 1 つ書き出します。 |
UDTF (ユーザ定義テーブル値関数) | ユーザ定義テーブル値関数は、1 つの関数を呼び出すと複数行のデータが出力されるというシナリオで使用します。 UDF では戻り値を 1 つしか出力できませんが、UDTF は複数フィールドを返すことができる独自のユーザー定義関数です。 |
UDAF (ユーザ定義集計関数) | ユーザー定義集計関数 (UDAF) の入力と出力の関係は、1 対多です。 複数の入力レコードが集約されて、出力値が求められます。Group By 句と一緒に使用できます。 詳細については、「集計関数集計関数」をご参照ください。 |
注
- ユーザー定義スカラー関数、ユーザー定義集計関数、ユーザー定義テーブル値関数などのユーザー定義関数をまとめて UDF といいます。より狭い意味では、ユーザー定義スカラー関数を指します。ここでは、この用語を頻繁に使用しており、文脈に応じて意味を判断できます。
- SQL 文で指定された UDF がメモリ不足であることを告げるプロンプトが表示されることがあります。この問題を解決するには、
set odps.sql.udf.joiner.jvm.memory = xxxx;
を設定します。 この原因は、データが巨大でデータの偏りも存在するためです。これにより、メモリサイズがタスクを占有し、デフォルトのメモリサイズを超えます。
MaxCompute UDFは、プロジェクト間で共有できます。 project_b 内の UDF は、project_a 内でも使用できます。 詳細については、「セキュリティガイド」ドキュメントの「権限付与」をご参照ください。
UDF の例
クイックスタートの「UDF の例」 をご参照ください。