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

MaxCompute:制限事項

最終更新日:Nov 20, 2024

MaxComputeを使用する前に、MaxComputeの使用制限について学ぶことをお勧めします。 このトピックでは、MaxComputeの使用に関する制限について説明します。

サブスクリプションコンピューティングリソースの制限

デフォルトでは、MaxComputeのサブスクリプションコンピューティングリソースとして最大2,000個のコンピューティングユニット (CU) を購入できます。 2,000以上のCUを購入する場合は、Alibaba Cloudアカウントを使用して ticketを行い、申請のチケットを起票します。 その後、MaxCompute製品エンジニアは、3営業日以内にクォータ増加申請を確認します。 レビュー結果はテキストメッセージで通知されます。

従量課金制MaxComputeサービスのコンピューティングリソースの制限

次の表に、1人のユーザーが1つのリージョンで使用できる従量課金制MaxComputeサービスのCUの最大数を示します。 これにより、1人のユーザーが過剰なクラスターリソースを占有した場合に、ユーザーがジョブの開始に失敗することを防ぎます。

国または地域

リージョン

従量課金制MaxComputeサービスのCUの最大数

中国のリージョン

中国 (杭州) 、中国 (上海) 、中国 (北京) 、中国 (張家口) 、中国 (ウランカブ) 、中国 (深セン) 、中国東部2金融、中国北部2アリ政府、中国南部1金融

2,000

中国 (成都) と中国 (香港)

500

その他の国または地域

シンガポール、マレーシア (クアラルンプール) 、インドネシア (ジャカルタ) 、日本 (東京) 、ドイツ (フランクフルト) 、米国 (シリコンバレー) 、米国 (バージニア) 、英国 (ロンドン) 、UAE (ドバイ)

500

重要

上記の上限は、取得できるCUの最大数を表し、使用できるCUの最小数を表すものではありません。 場合によっては、クエリを高速化するためにMaxComputeでより多くのCUが使用される場合があります。

トンネルスロットサブスクリプションの制限

デフォルトでは、MaxComputeのサブスクリプショントンネルサービス用に最大500スロットを購入できます。 500を超えるスロットを購入する場合は、申請のチケットを起票してください。

SQLの制限

次の表に、MaxComputeでのSQLジョブの開発の制限を示します。

項目

最大値 /制限

カテゴリ

説明

テーブル名の長さ

128 バイト

Length

テーブル名または列名には、英数字、およびアンダースコア (_) のみを使用できます。 先頭は文字である必要があります。 特殊文字はサポートされていません。

コメントの長さ

1,024 バイト

Length

コメントは、長さが1,024バイトを超えることができない有効な文字列です。

テーブルの列定義

1,200

Quantity

テーブルには、最大1,200個の列定義を含めることができます。

テーブルのパーティション

60,000

Quantity

テーブルには最大60,000個のパーティションを含めることができます。

テーブルのパーティション階層

6

Quantity

テーブルには、最大6レベルのパーティションを含めることができます。

出力表示

10,000 行

Quantity

SELECTステートメントは、最大10,000行を返すことができます。

INSERT操作の宛先テーブルの数

256

Quantity

MULTI-INSERTステートメントを使用すると、同時に最大256個のテーブルにデータを挿入できます。

UNION ALL

256

Quantity

UNION ALLステートメントでは、最大256個のテーブルを組み合わせることができます。

MAPJOIN

128

Quantity

MAPJOINヒントを使用すると、最大128個の小さなテーブルに参加できます。

MAPJOINメモリ

512 MB

Quantity

SQL文でMAPJOINヒントを指定する場合、すべての小さなテーブルのメモリサイズは512 MBを超えることはできません。

ptinsubq

1000 行

Quantity

PT IN SUBQUERYステートメントは、最大1,000行を生成できます。

SQL文の長さ

2 MB

Length

SQL文の長さは2 MBを超えることはできません。 この制限は、SDKを使用してSQL文を実行するシナリオに適しています。

列レコードの長さ

8 MB

Quantity

テーブル内の列レコードの最大長は8 MBです。

IN句のパラメータ

1,024

Quantity

in句のパラメーターの最大数 (IN (1,2,3 ....,1024)) を指定します。 IN句のパラメーター数が多すぎると, コンパイルのパフォーマンスに影響します。 最大1,024個のパラメーターを使用することを推奨しますが、これは固定の上限ではありません。

jobconf.json

1 MB

Length

jobconf.jsonファイルの最大サイズは1 MBです。 テーブルに多数のパーティションが含まれている場合, jobconf.jsonファイルのサイズが1 MBを超えることがあります。

ビュー

書き込み不可

操作

ビューは書き込み可能ではなく、INSERTステートメントをサポートしていません。

列のデータ型と位置

変更不可

操作

列のデータ型と位置は変更できません。

Javaユーザー定義関数 (UDF)

abstractまたはstaticにすることはできません

操作

Java UDFをabstractまたはstaticにすることはできません。

照会可能なパーティション

10,000

Quantity

最大 10,000 のパーティションを照会できます。

SQL実行プラン

1 MB

Length

MaxCompute SQL文を使用して生成される実行プランのサイズは、1 MBを超えることはできません。 それ以外の場合、FAILED: ODPS-0010000: システム内部エラー-プランのサイズが大きすぎるというエラーメッセージが報告されます。

1つのジョブの最大実行时间

72時間

実行期間

1つのSQLジョブのデフォルトの最大実行時間は24時間です。 次のパラメーター設定を使用して、単一のSQLジョブを最大72時間実行できます。 SQLジョブは72時間以上実行できません。 SQLジョブが72時間実行されると、ジョブは自動的に停止されます。

set odps.sql.job.max.time.hours=72;

SQLの詳細については、「SQL」をご参照ください。

MapReduceの制限

次の表に、MaxComputeでのMapReduceジョブの開発に関する制限を示します。

項目

値の範囲

分類

設定アイテム

デフォルト値

設定可能

説明

インスタンスによって占有されるメモリ

[256 MB、12 GB]

メモリ

odps.stage.mapper(reducer).memおよびodps.stage.mapper(reducer).jvm.mem

2,048 MBと1,024 MB

可能

単一のマップまたはreduceインスタンスによって占有されるメモリ。 メモリは、デフォルトで2,048 MBのフレームワークメモリと、デフォルトで1,024 MBのJava仮想マシン (JVM) ヒープメモリの2つの部分で構成されます。

リソース数

256

Quantity

-

非該当

可能ではない

各ジョブは最大 256 個のリソースを参照できます。 各テーブルまたはアーカイブは1つのリソースと見なされます。

入出力数

1,024と256

Quantity

-

非該当

可能ではない

ジョブの入力数は1,024を超えることはできません。ジョブの出力数は256を超えることはできません。 テーブルのパーティションは、1つの入力とみなされる。 テーブルの数は64を超えることはできません。

カウンター数

64

Quantity

-

非該当

可能ではない

ジョブ内のカスタムカウンターの数は64を超えることはできません。 カウンタグループ名およびカウンタ名には、番号記号 (#) を含めることはできません。 2つの名前の合計の長さは100文字を超えることはできません。

mapインスタンスの数

[1,100000]

Quantity

odps.stage.mapper.num

非該当

可能

ジョブ内のマップインスタンスの数は、分割サイズに基づいてフレームワークによって計算されます。 入力テーブルを指定しない場合は、odps.stage.mapper.numパラメーターを設定して、mapインスタンスの数を指定できます。 値の範囲は1から100,000です。

reduceインスタンスの数

[0,2000]

Quantity

odps.stage.reducer.num

非該当

可能

デフォルトでは、ジョブ内のreduceインスタンスの数は、mapインスタンスの数の25% です。 数値を0から2,000の範囲の値に設定できます。 Reduceインスタンスは、mapインスタンスよりもはるかに多くのデータを処理するため、reduceステージでの処理時間が長くなる可能性があります。 ジョブは、最大でインスタンスを削減2,000必要があります。

リトライ回数

3

Quantity

-

非該当

可能ではない

mapまたはreduceインスタンスで許可される再試行の最大数は3です。 リトライを許可しない例外により、ジョブが失敗する可能性があります。

ローカルデバッグモード

最大100インスタンス

Quantity

-

非該当

可能ではない

ローカルデバッグモード:

  • mapインスタンスの数はデフォルトで2で、100を超えることはできません。

  • redece インスタンスの数はデフォルトで 1 で、100を超えません。

  • 1つの入力に対するダウンロードレコードの数はデフォルトで100であり、10,000を超えることはできません。

リソースが繰り返し読み取られる回数

64

Quantity

-

非該当

可能ではない

mapまたはreduceインスタンスがリソースを繰り返し読み取る回数は、64回を超えることはできません。

リソースバイト

2 GB

Length

-

非該当

可能ではない

ジョブによって参照されるリソースの合計バイト数は2 GBを超えることはできません。

分割サイズ

1以上

Length

odps.stage.mapper.split.size

256 MB

可能

フレームワークは、分割サイズに基づいてマップインスタンスの数を決定します。

列内の文字列の長さ

8 MB

Length

-

非該当

可能ではない

列内の文字列の長さは8 MBを超えることはできません。

ワーカーのタイムアウト期間

[1,3600]

時間

odps.function.timeout

600

可能

context.progress() を使用して、ワーカーがデータを読み書きしない、またはハートビートの送信を停止した場合の、mapまたはreduceワーカーのタイムアウト期間。 デフォルト値は600秒です。

MapReduceによって参照されるテーブルでサポートされるフィールドタイプ

BIGINT、DOUBLE、STRING、DATETIME、BOOLEAN

データ型

-

非該当

可能ではない

MapReduceタスクがテーブルを参照するとき、テーブルにサポートされていないフィールドタイプがある場合はエラーが返されます。

Object Storage Service (OSS) データの読み取り

-

機能

-

非該当

可能ではない

MapReduceはOSSデータを読み取ることができません。

MaxCompute V2.0の新しいデータ型

-

機能

-

非該当

可能ではない

MapReduceはMaxCompute V2.0の新しいデータ型をサポートしていません。

MapReduceの詳細については、「MapReduce」をご参照ください。

PyODPSの制限

DataWorksを使用してMaxComputeでPyODPSジョブを開発する前に、次の制限事項に注意してください。

  • 各PyODPSノードは最大50 MBのデータを処理でき、最大1 GBのメモリを占有できます。 これを超えた場合、DataWorks は PyODPS ノードを終了します。 PyODPSジョブで不要なPythonデータ処理コードを記述しないでください。

  • DataWorksでのコードの書き込みとデバッグの効率は低いです。 コードを記述するには、オンプレミスマシンに統合開発環境 (IDE) をインストールすることをお勧めします。

  • DataWorksのゲートウェイへの過度の負荷を防ぐために、DataWorksはCPU使用率とメモリ使用量を制限します。 システムがGot killedと表示された場合、メモリ使用量が上限を超え、システムは関連するプロセスを終了します。 ローカルデータ操作を実行しないことを推奨します。 ただし、メモリ使用量とCPU使用率の制限は、PyODPSによって開始されるto_pandasを除き、SQLタスクまたはDataFrameタスクには適用されません。

  • matplotlibなどのパッケージがないため、次の点で関数が制限される場合があります。

    • DataFrameのプロット関数の使用が影響を受けます。

    • DataFrameユーザー定義関数 (UDF) は、DataFrame UDFがMaxComputeにコミットされた後にのみ使用できます。 Pythonサンドボックスの要件に基づいてUDFを実行するには、純粋なPythonライブラリとNumPyライブラリのみを使用できます。 パンダなど、他のサードパーティライブラリは使用できません。

    • DataWorksにプリインストールされているNumPyおよびpandasライブラリを使用して、UDF以外の関数のコードを実行できます。 バイナリコードを含むサードパーティパッケージはサポートされていません。

  • 互換性の理由から、DataWorksではデフォルトでoptions.tunnel.us e_instance_tunnelがFalseに設定されています。 InstanceTunnelをグローバルに有効にする場合は、このパラメーターをTrueに設定する必要があります。

  • 実装上の理由から、Python atexitパッケージはサポートされていません。 関連する機能を実装するには、try-finally構造を使用する必要があります。

PyODPSの詳細については、「PyODPS」をご参照ください。

グラフの制限

MaxComputeでGraphジョブを開発する前に、次の制限事項に注意してください。

  • 各ジョブは最大 256 個のリソースを参照できます。 各テーブルまたはアーカイブは1つのユニットと見なされます。

  • ジョブが参照するリソースの合計バイト数は512 MBを超えることはできません。

  • ジョブの入力数は1,024を超えることはできません。ジョブの出力数は256を超えることはできません。 入力テーブルの数は64を超えることはできません。

  • 複数の出力に指定するラベルは、nullまたは空の文字列にすることはできません。 ラベルの長さは256文字列を超えることはできません。英数字、アンダースコア (_) 、数字記号 (#) 、ピリオド (.) 、ハイフン (-) のみを使用できます。

  • ジョブ内のカスタムカウンターの数は64を超えることはできません。 カウンターのグループ名カウンター名に番号記号 (#) を含めることはできません。 2つの名前の合計の長さは100文字を超えることはできません。

  • ジョブのワーカーの数は、フレームワークによって計算されます。 ワーカーの最大数は1,000です。 ワーカーの数がこの値を超えると、例外がスローされます。

  • ワーカーは、デフォルトで200単位のCPUリソースを消費します。 消費されるリソースの範囲は50〜800です。

  • ワーカーはデフォルトで4,096 MBのメモリを消費します。 消費されるメモリの範囲は256 MB〜12 GBです。

  • ワーカーは、リソースを最大64回まで繰り返し読み取ることができます。

  • split_sizeのデフォルト値は64 MBです。 必要に応じて値を設定できます。 split_sizeの値は、0より大きく、9223372036854775807>>20操作の結果以下である必要があります。

  • MaxCompute GraphのGraphLoader、Vertex、およびAggregatorは、クラスターで実行する場合、Javaサンドボックスによって制限されます。 ただし、GraphジョブのメインプログラムはJavaサンドボックスによって制限されていません。 詳細については、「Javaサンドボックス」をご参照ください。

グラフの詳細については、「グラフ」をご参照ください。

その他の制限

次の表に、さまざまなリージョンのMaxComputeプロジェクトで送信できる同時ジョブの最大数を示します。

リージョン

1つのMaxComputeプロジェクトでの同時ジョブの最大数

中国 (杭州) 、中国 (上海) 、中国 (北京) 、中国 (張家口) 、中国 (ウランカブ) 、中国 (深セン) 、中国 (成都)

2,500

中国 (香港) 、シンガポール、オーストラリア (シドニー) 、マレーシア (クアラルンプール) 、インドネシア (ジャカルタ) 、日本 (東京) 、ドイツ (フランクフルト) 、米国 (シリコンバレー) 、米国 (バージニア) 、英国 (ロンドン) 、インド (ムンバイ) クロージングダウン、アラブ首长国连邦 (ドバイ)

300

MaxComputeプロジェクトで送信する同時ジョブの数が上限に達したときにジョブを送信し続けると、エラーメッセージが表示されます。 サンプルエラーメッセージ: com.aliyun.odps.OdpsException: フロー制御によって拒否されたリクエスト。 このプロジェクトで同時に実行できるタスク数の制限を超えています。 後でお試しください。