MaxCompute を使用する前に、MaxCompute の使用制限について理解しておくことをお勧めします。このトピックでは、MaxCompute の使用制限について説明します。
サブスクリプション計算リソースの制限
デフォルトでは、MaxCompute のサブスクリプション計算リソースとして最大 2,000 計算ユニット(CU)を購入できます。 2,000 CU を超える購入を希望する場合は、Alibaba Cloud アカウントを使用して[チケット]に記入し、申請のためにチケットを送信してください。 その後、MaxCompute プロダクトエンジニアが 3 営業日以内にクォータ増加申請を確認します。 審査結果はショートメッセージでお知らせします。
従量課金制 MaxCompute サービスの計算リソースの制限
次の表は、単一のユーザーが単一のリージョンで使用できる従量課金制 MaxCompute サービスの CU の最大数を示しています。これにより、単一のユーザーが過剰な量のクラスタリソースを占有している場合に、ジョブの開始に失敗することを防ぎます。
国または地域 | リージョン | 従量課金制 MaxCompute サービスの CU の最大数 |
中国のリージョン | 中国 (杭州)、中国 (上海)、中国 (北京)、中国 (張家口)、中国 (烏蘭察布)、中国 (深圳)、華東 2 金融雲、華北 2 政務雲、華南 1 金融雲 | 2,000 |
中国 (成都)、中国 (香港) | 500 | |
その他の国または地域 | シンガポール、マレーシア (クアラルンプール)、インドネシア (ジャカルタ)、日本 (東京)、ドイツ (フランクフルト)、米国 (シリコンバレー)、米国 (バージニア)、英国 (ロンドン)、UAE (ドバイ) | 500 |
上記の制限は、取得できる CU の最大数を表しており、使用できる CU の最小数を表しているわけではありません。場合によっては、クエリを高速化するために、MaxCompute でより多くの CU が使用されることがあります。
サブスクリプション Tunnel スロットの制限
デフォルトでは、MaxCompute のサブスクリプション Tunnel サービス用に最大 500 スロットを購入できます。 500 スロットを超える購入を希望する場合は、申請のためにチケットを送信できます。500
SQL の制限
次の表は、MaxCompute での SQL ジョブの開発に関する制限を示しています。
項目 | 最大値/制限 | カテゴリ | 説明 |
テーブル名の長さ | 128 バイト | 長さ | テーブル名または列名には、文字、数字、およびアンダースコア (_) のみを含めることができます。文字で始める必要があります。特殊文字はサポートされていません。 |
コメントの長さ | 1,024 バイト | 長さ | コメントは、長さが 1,024 バイトを超えることができない有効な文字列です。 |
テーブルの列定義 | 1,200 | 数量 | テーブルには最大 1,200 の列定義を含めることができます。 |
テーブルのパーティション | 60,000 | 数量 | テーブルには最大 60,000 のパーティションを含めることができます。 |
テーブルのパーティションレベル | 6 | 数量 | テーブルには最大 6 レベルのパーティションを含めることができます。 |
出力表示 | 10,000 行 | 数量 | SELECT 文は最大 10,000 行を返すことができます。 |
| 256 | 数量 |
|
| 256 | 数量 |
|
| 128 | 数量 |
|
| 512 MB | 数量 | SQL 文で |
| 1,000 行 | 数量 | PT IN SUBQUERY 文は最大 1,000 行を生成できます。 |
SQL 文の長さ | 2 MB | 長さ | SQL 文の長さは 2 MB を超えることはできません。この制限は、SDK を使用して SQL 文を実行するシナリオに適しています。 |
列レコードの長さ | 8 MB | 数量 | テーブルの列レコードの最大長は 8 MB です。 |
IN 句のパラメーター | 1,024 | 数量 | この項目は、IN 句 (例: |
| 1 MB | 長さ |
|
ビュー | 書き込み不可 | 操作 | ビューは書き込み可能ではなく、 |
列のデータ型と位置 | 変更不可 | 操作 | 列のデータ型と位置は変更できません。 |
Java ユーザー定義関数 (UDF) |
| 操作 | Java UDF は、 |
クエリ可能なパーティション | 10,000 | 数量 | 最大 10,000 のパーティションをクエリできます。 |
SQL 実行計画 | 1 MB | 長さ | MaxCompute SQL 文を使用して生成される実行計画のサイズは、1 MB を超えることはできません。超えた場合は、エラーメッセージ |
単一ジョブの最大実行時間 | 72 時間 | 実行時間 | 単一の SQL ジョブのデフォルトの最大実行時間は 24 時間です。次のパラメーター設定を使用して、単一の SQL ジョブを最大 72 時間実行できます。SQL ジョブは 72 時間以上実行できません。SQL ジョブが 72 時間実行されると、ジョブは自動的に停止します。 |
テーブルパーティションの作成頻度 | 15 秒あたり 120 回 | 頻度制限 | テーブルパーティションを作成するために ALTER TABLE <table_name> ADD PARTITION <pt_spec> 操作を実行するための頻度制限は、15 秒あたり 120 回です。 |
SQL の詳細については、「SQL」をご参照ください。
MapReduce の制限
次の表は、MaxCompute での MapReduce ジョブの開発に関する制限を示しています。
| 項目 | 値の範囲 | 分類 | 構成項目 | デフォルト値 | 構成可能 | 説明 |
| インスタンスが占有するメモリ | [256 MB, 12 GB] | メモリ | odps.stage.mapper(reducer).memodps.stage.mapper(reducer).jvm.mem および | 2,048 MB および 1,024 MB | はい | 単一の map または reduce インスタンスが占有するメモリ。メモリは 2 つの部分で構成されています。デフォルトで 2,048 MB のフレームワークメモリと、デフォルトで 1,024 MB の Java 仮想マシン (JVM) ヒープメモリです。 |
| リソースの数 | 256 | 数量 | - | 該当なし | いいえ | 各ジョブは最大 256 のリソースを参照できます。各テーブルまたはアーカイブは 1 つのリソースと見なされます。 |
| 入力と出力の数 | 1,024 および 256 | 数量 | - | 該当なし | いいえ | ジョブの入力の数は 1,024 を超えることはできず、ジョブの出力の数は 256 を超えることはできません。テーブルのパーティションは 1 つの入力と見なされます。テーブルの数は 64 を超えることはできません。 |
| カウンターの数 | 64 | 数量 | - | 該当なし | いいえ | ジョブのカスタムカウンターの数は 64 を超えることはできません。カウンターグループ名とカウンター名に番号記号 (#) を含めることはできません。2 つの名前の合計の長さは 100 文字を超えることはできません。 |
| map インスタンスの数 | [1, 100000] | 数量 | odps.stage.mapper.num | 該当なし | はい | ジョブの map インスタンスの数は、分割サイズに基づいてフレームワークによって計算されます。入力テーブルが指定されていない場合は、odps.stage.mapper.num パラメーターを設定して map インスタンスの数を指定できます。値の範囲は 1 から 100,000 です。 |
| reduce インスタンスの数 | [0, 2000] | 数量 | odps.stage.reducer.num | 該当なし | はい | デフォルトでは、ジョブの reduce インスタンスの数は map インスタンスの数の 25% です。数を 0 から 2,000 の範囲の値に設定できます。reduce インスタンスは map インスタンスよりもはるかに多くのデータを処理するため、reduce ステージの処理時間が長くなる可能性があります。ジョブは最大 2,000 の reduce インスタンスを持つことができます。 |
| 再試行回数 | 3 | 数量 | - | 該当なし | いいえ | map または reduce インスタンスに許可される最大再試行回数は 3 です。再試行を許可しない例外が発生すると、ジョブが失敗する可能性があります。 |
| ローカルデバッグモード | 最大 100 インスタンス | 数量 | - | 該当なし | いいえ | ローカルデバッグモードでは、次のようになります。
|
| リソースが繰り返し読み取られる回数 | 64 | 数量 | - | 該当なし | いいえ | map または reduce インスタンスがリソースを繰り返し読み取る回数は 64 を超えることはできません。 |
| リソースバイト数 | 2 GB | 長さ | - | 該当なし | いいえ | ジョブによって参照されるリソースの合計バイト数は 2 GB を超えることはできません。 |
| 分割サイズ | 1 以上 | 長さ | odps.stage.mapper.split.size | 256 MB | はい | フレームワークは分割サイズに基づいて map インスタンスの数を決定します。 |
| 列の文字列の長さ | 8 MB | 長さ | - | 該当なし | いいえ | 列の文字列の長さは 8 MB を超えることはできません。 |
| ワーカーのタイムアウト期間 | [1, 3600] | 時間 | odps.function.タイムアウト | 600 | 600 | はいcontext.progress() |
| 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 の plot 関数の使用に影響します。
DataFrame ユーザー定義関数 (UDF) は、DataFrame UDF が MaxCompute にコミットされた後にのみ使用できます。Python サンドボックスの要件に基づいて UDF を実行するには、純粋な Python ライブラリと NumPy ライブラリのみを使用できます。 pandas などの他のサードパーティライブラリは使用できません。
DataWorks にプリインストールされている NumPy および pandas ライブラリを使用して、UDF 以外の関数のコードを実行できます。バイナリコードを含むサードパーティパッケージはサポートされていません。
互換性の理由から、DataWorks では options.tunnel.use_instance_tunnel はデフォルトで False に設定されています。[InstanceTunnel] をグローバルに有効にする場合は、このパラメーターを True に設定する必要があります。
実装上の理由により、Python atexit パッケージはサポートされていません。try-finally 構造を使用して関連機能を実装する必要があります。
PyODPS の詳細については、「PyODPS」をご参照ください。
Graph の制限
MaxCompute で Graph ジョブを開発する前に、次の制限に注意してください。
各ジョブは最大 256 のリソースを参照できます。各テーブルまたはアーカイブは 1 つのユニットと見なされます。
ジョブによって参照されるリソースの合計バイト数は 512 MB を超えることはできません。
ジョブの入力の数は 1,024 を超えることはできず、ジョブの出力の数は 256 を超えることはできません。入力テーブルの数は 64 を超えることはできません。
複数の出力に指定されたラベルを null または空の文字列にすることはできません。ラベルの長さは 256 文字列を超えることはできず、文字、数字、アンダースコア (_)、番号記号 (#)、ピリオド (.)、およびハイフン (-) のみを含めることができます。
1 つのジョブのカスタムカウンターの数は 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 サンドボックス」をご参照ください。
Graph の詳細については、「Graph」をご参照ください。
その他の制限
次の表は、異なるリージョンにある MaxCompute プロジェクトで同時に送信できるジョブの最大数を示しています。
Region | Maximum number of concurrent jobs in a single MaxCompute project |
China (Hangzhou), China (Shanghai), China (Beijing), China (Zhangjiakou), China (Ulanqab), China (Shenzhen), and China (Chengdu) | 2,500 |
China (Hong Kong), Singapore, Malaysia (Kuala Lumpur), Indonesia (Jakarta), Japan (Tokyo), Germany (Frankfurt), US (Silicon Valley), US (Virginia), UK (London) and UAE (Dubai) | 1000 |
MaxCompute プロジェクトで同時実行ジョブ数が上限に達しているときにジョブの送信を続けると、エラーメッセージが表示されます。エラーメッセージの例:com.aliyun.odps.OdpsException: Request rejected by flow control. You have exceeded the limit for the number of tasks you can run concurrently in this project. Please try later。