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行を返すことができます。 |
| 256 | Quantity |
|
| 256 | Quantity |
|
| 128 | Quantity |
|
| 512 MB | Quantity | SQL文で |
| 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句のパラメーターの最大数 ( |
| 1 MB | Length |
|
ビュー | 書き込み不可 | 操作 | ビューは書き込み可能ではなく、 |
列のデータ型と位置 | 変更不可 | 操作 | 列のデータ型と位置は変更できません。 |
Javaユーザー定義関数 (UDF) |
| 操作 | Java UDFを |
照会可能なパーティション | 10,000 | Quantity | 最大 10,000 のパーティションを照会できます。 |
SQL実行プラン | 1 MB | Length | MaxCompute SQL文を使用して生成される実行プランのサイズは、1 MBを超えることはできません。 それ以外の場合、 |
1つのジョブの最大実行时间 | 72時間 | 実行期間 | 1つのSQLジョブのデフォルトの最大実行時間は24時間です。 次のパラメーター設定を使用して、単一のSQLジョブを最大72時間実行できます。 SQLジョブは72時間以上実行できません。 SQLジョブが72時間実行されると、ジョブは自動的に停止されます。
|
SQLの詳細については、「SQL」をご参照ください。
MapReduceの制限
次の表に、MaxComputeでのMapReduceジョブの開発に関する制限を示します。
項目 | 値の範囲 | 分類 | 設定アイテム | デフォルト値 | 設定可能 | 説明 |
インスタンスによって占有されるメモリ | [256 MB、12 GB] | メモリ |
| 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 | - | 非該当 | 可能ではない | ローカルデバッグモード:
|
リソースが繰り返し読み取られる回数 | 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 | 可能 |
|
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: フロー制御によって拒否されたリクエスト。 このプロジェクトで同時に実行できるタスク数の制限を超えています。 後でお試しください。