在使用MaxCompute前,建議您先瞭解產品相關使用限制,確保業務可順利開展。本文為您介紹使用MaxCompute過程中的操作限制。
訂用帳戶計算資源可購買額度限制說明
MaxCompute訂用帳戶計算資源(單位:CU)預設最多可購買額度上限為2000 CU,若您希望購買超過2000 CU的計算資源,請您使用阿里雲帳號填寫工單提交申請,MaxCompute產品工作人員會在三個工作日內審核您的提額申請,審核結果將以簡訊形式通知您。
隨用隨付標準版計算資源限制
為了避免單使用者佔用過多叢集資源而導致其他使用者無法發起作業的情況發生,MaxCompute限制了單使用者、單地區可使用的隨用隨付標準版計算資源(單位:CU)上限,具體額度請參見下表。
國家或地區 | 地區(Region) | 隨用隨付標準版計算資源CU上限 |
中國地區 | 華東1(杭州)、華東2(上海)、華北2(北京)、華北3(張家口)、華北6(烏蘭察布)、華南1(深圳)、華東2金融雲(上海)、華北2政務雲(北京)、華南1金融雲(深圳) | 2000 |
西南1(成都)、中國(香港) | 500 | |
其他國家或地區 | 新加坡、馬來西亞(吉隆坡)、印尼(雅加達)、日本(東京)、德國(法蘭克福)、美國(矽谷)、美國(維吉尼亞)、英國(倫敦)、阿聯酋(杜拜) | 500 |
以上CU上限值僅代表可擷取的最大值,並非保障值,MaxCompute也可能會突破此限制以加快查詢速度。
訂用帳戶Data Transmission Service並發可購買額度限制說明
MaxCompute訂用帳戶Data Transmission Service並發(單位:Slot)預設最多可購買額度上限為500,若您希望購買超過500並發,請您提交工單申請。
Data Transmission Service(上傳/下載)限制
在MaxCompute中上傳下載資料時的使用限制請參見Data Transmission Service使用限制。
更多資料上傳下載資訊,請參見資料上傳下載。
Data Transmission Service共用資源組說明
下表資料為不同地區下免費共用資源(單位:Slot)Project級最多可用Slot數說明。
網站 | 地區 | Slot(個數) |
中國 | 華東1(杭州) | 300 |
中國 | 華東2(上海) | 600 |
中國 | 華東2金融雲(上海) | 50 |
中國 | 華北2(北京) | 300 |
中國 | 華北2政務雲(北京) | 100 |
中國 | 華北3(張家口) | 300 |
中國 | 華北6(烏蘭察布) | 300 |
中國 | 華南1(深圳) | 150 |
中國 | 華南1金融雲(深圳) | 50 |
中國 | 西南1(成都) | 150 |
中國 | 中國(香港) | 50 |
亞太地區 | 新加坡(新加坡) | 100 |
亞太地區 | 馬來西亞(吉隆坡) | 50 |
亞太地區 | 印尼(雅加達) | 50 |
亞太地區 | 日本(東京) | 50 |
歐美地區 | 德國(法蘭克福) | 50 |
歐美地區 | 美國(矽谷) | 100 |
歐美地區 | 美國(維吉尼亞) | 50 |
歐美地區 | 英國(倫敦) | 50 |
中東與印度 | 阿聯酋(杜拜) | 50 |
SQL限制
在MaxCompute中開發SQL作業時的使用限制如下。
限制項 | 最大值/限制條件 | 分類 | 說明 |
表名長度 | 128位元組 | 長度限制 | 表名、列名中不能有特殊字元,必須以字母開頭,且只能使用英文小寫字母(a-z)、英文大寫字母(A-Z)、數字和底線(_)。 |
注釋長度 | 1024位元組 | 長度限制 | 長度不超過1024位元組的有效字串。 |
表的列定義 | 1200個 | 數量限制 | 單表的列定義個數最多為1200個。 |
單表分區數 | 60000個 | 數量限制 | 單表的分區個數最多為60000個。 |
表的分區層級 | 6級 | 數量限制 | 在表中建立的分區層次不能超過6級。 |
屏顯 | 10000行 | 數量限制 | SELECT語句屏顯最多輸出10000行。 |
| 256個 | 數量限制 |
|
| 256個 | 數量限制 |
|
| 128個 | 數量限制 |
|
| 512 MB | 數量限制 |
|
| 1000行 | 數量限制 | 子查詢中存在分區列時,子查詢的返回結果不能超過1000行。 |
SQL語句長度 | 2 MB | 長度限制 | SQL語句的最大長度為2 MB。包括您使用SDK調用SQL的情境。 |
列記錄長度 | 8 MB | 數量限制 | 表中單個單元的最大長度為8 MB。 |
IN的參數個數 | 1024 | 數量限制 | IN的最大參數限制,例如 |
| 1 MB | 長度限制 |
|
視圖 | 不可寫 | 操作限制 | 視圖不支援寫入,不支援 |
列的資料類型 | 不可修改 | 操作限制 | 不允許修改列的資料類型及列位置。 |
Java UDF函數 | 不允許為 | 操作限制 | Java UDF函數不能為 |
最多查詢分區個數 | 10000個 | 數量限制 | 最多查詢分區個數不能超過10000個。 |
SQL執行計畫長度 | 1 MB | 長度限制 | MaxCompute SQL產生的執行計畫不能超過1 MB,否則會觸發 |
單作業最大執行時間 | 72小時 | 運行時間長度限制 | 預設情況下,SQL單個作業的最長已耗用時間為24小時,可以通過下面的參數設定,將單個作業的最長已耗用時間增加到72小時。目前SQL作業不能超過72小時,超過後會自動停止運行。
|
更多SQL資訊,請參見SQL。
MapReduce限制
在MaxCompute中開發MapReduce作業時的使用限制如下。
邊界名 | 邊界值 | 分類 | 配置項名稱 | 預設值 | 是否可配置 | 說明 |
Instance記憶體佔用 | [256 MB,12 GB] | 記憶體限制 | odps.stage.mapper(reducer).mem 和odps.stage.mapper(reducer).jvm.mem | 2048 MB+1024 MB | 是 | 單個Map Instance或Reduce Instance佔用Memory,有架構Memory(預設2048 MB)和JVM的Heap Memory(預設1024 MB)兩部分。 |
Resource數量 | 256個 | 數量限制 | - | 無 | 否 | 單個Job引用的Resource數量不超過256個,Table、Archive按照一個單位計算。 |
輸入路數和輸出路數 | 1024個和256個 | 數量限制 | - | 無 | 否 | 單個Job的輸入路數不能超過1024(同一個表的一個分區算一路輸入,總的不同表個數不能超過64個),單個Job的輸出路數不能超過256。 |
Counter數量 | 64個 | 數量限制 | - | 無 | 否 | 單個Job中自訂Counter的數量不能超過64,Counter的Group Name和Counter Name中不能帶有井號(#),兩者長度和不能超過100。 |
Map Instance | [1,100000] | 數量限制 | odps.stage.mapper.num | 無 | 是 | 單個Job的Map Instance個數由架構根據Split Size計算得出,如果沒有輸入表,可以通過odps.stage.mapper.num直接設定,最終個數範圍[1,100000]。 |
Reduce Instance | [0,2000] | 數量限制 | odps.stage.reducer.num | 無 | 是 | 單個Job預設Reduce Instance個數為Map Instance個數的1/4,使用者佈建作為最終的Reduce Instance個數,範圍[0,2000]。可能出現這樣的情形:Reduce處理的資料量會比Map大很多倍,導致Reduce階段比較慢,而Reduce只能最多2000。 |
重試次數 | 3 | 數量限制 | - | 無 | 否 | 單個Map Instance或Reduce Instance失敗重試次數為3,一些不可重試的異常會直接導致作業失敗。 |
Local Debug模式 | Instance個數不超100 | 數量限制 | - | 無 | 否 | Local Debug模式下:
|
重複讀取Resource次數 | 64次 | 數量限制 | - | 無 | 否 | 單個Map Instance或Reduce Instance重複讀一個Resource次數限制<=64次。 |
Resource位元組數 | 2 GB | 長度限制 | - | 無 | 否 | 單個Job引用的Resource總計位元組數大小不超過2 GB。 |
Split Size | 大於等於1 | 長度限制 | odps.stage.mapper.split.size | 256 MB | 是 | 架構會參考設定的Split Size值來劃分Map,決定Map的個數。 |
STRING列內容長度 | 8 MB | 長度限制 | - | 無 | 否 | MaxCompute表STRING列內容長度不允許超出限制。 |
Worker運行逾時時間 | [1,3600] | 時間限制 | odps.function.timeout | 600 | 是 | Map或者Reduce Worker在無資料讀寫且沒有通過context.progress() 主動發送心跳的情況下的逾時時間,預設值是600s。 |
MapReduce引用Table資源支援的欄位類型 | BIGINT、DOUBLE、STRING、DATETIME、BOOLEAN | 資料類型限制 | - | 無 | 否 | MapReduce任務參考資料表資源時,若表欄位有其他類型欄位執行報錯。 |
MapReduce是否支援讀取OSS資料 | - | 功能限制 | - | 無 | 否 | MapReduce不支援讀取OSS資料。 |
MapReduce是否支援MaxCompute 2.0新類型 | - | 功能限制 | - | 無 | 否 | MapReduce不支援MaxCompute 2.0新類型。 |
更多MapReduce資訊,請參見MapReduce。
PyODPS限制
在MaxCompute中基於DataWorks開發PyODPS作業時的使用限制如下:
PyODPS節點擷取本地處理的資料不能超過50 MB,節點運行時佔用記憶體不能超過1 GB,否則節點任務會被系統中止。請避免在PyODPS任務中添加額外的Python資料處理代碼。
在DataWorks上編寫代碼並進行調試效率較低,為提升運行效率,建議本地安裝IDE進行代碼開發。
在DataWorks上使用PyODPS時,為了防止對DataWorks的Gate Way造成壓力,對記憶體和CPU都有限制,該限制由DataWorks統一管理。如果您發現有Got killed報錯,即表明記憶體使用量超限,進程被中止。因此,請盡量避免本地的資料操作。通過PyODPS發起的SQL和DataFrame任務(除to_pandas外)不受此限制。
由於缺少matplotlib等包,如下功能可能受限:
DataFrame的plot函數。
DataFrame自訂函數需要提交到MaxCompute執行。由於Python沙箱限制,第三方庫只支援所有的純粹Python庫以及Numpy,因此不能直接使用Pandas。
DataWorks中執行的非自訂函數代碼可以使用平台預裝的Numpy和Pandas。不支援其他帶有二進位代碼的第三方包。
由於相容性原因,在DataWorks中,options.tunnel.use_instance_tunnel預設設定為False。如果需要全域開啟instance tunnel,需要手動將該值設定為True。
由於實現的原因,Python的atexit包不被支援,請使用try-finally結構實現相關功能。
更多PyODPS資訊,請參見PyODPS。
Graph限制
在MaxCompute中開發Graph作業時的使用限制如下:
單個Job引用的Resource數量不超過256個,Table、Archive按照一個單位計算。
單個Job引用的Resource總計位元組數大小不超過512 MB。
單個Job的輸入路數不能超過1024(輸入表的個數不能超過64)。單個Job的輸出路數不能超過256。
多路輸出中指定的Label不能為NULL或者Null 字元串,長度不能超過256個字串,只能包括A-Z、a-z、0-9、底線(_)、井號(#)、英文句點(.)和短劃線(-)。
單個Job中自訂Counter的數量不能超過64個。Counter的
group name
和counter name
中不能帶有井號(#),兩者長度和不能超過100。單個Job的Worker數由架構計算得出,最大為1000個,超過拋異常。
單個Worker佔用CPU預設為200個,範圍為[50,800]。
單個Worker佔用Memory預設為4096 MB,範圍為[256 MB,12 GB]。
單個Worker重複讀一個Resource次數限制不大於64次。
split_size
預設為64 MB,您可自行設定,範圍為0<split_size
≤(9223372036854775807>>20)。MaxCompute Graph程式中的GraphLoader、Vertex、Aggregator等在叢集運行時,受到Java沙箱的限制(Graph作業的主程式則不受此限制),具體限制請參見Java沙箱。
更多Graph資訊,請參見Graph。
其他限制
各地區下的單個MaxCompute專案支援同時提交的作業數量限制如下。
地區 | 單個MaxCompute專案作業並發上限 |
華東1(杭州)、華東2(上海)、華北2(北京)、華北3(張家口)、華北6(烏蘭察布)、華南1(深圳)、西南1(成都) | 2500 |
中國香港、新加坡、馬來西亞(吉隆坡)、印尼(雅加達)、日本(東京)、德國(法蘭克福)、美國(矽谷)、美國(維吉尼亞)、英國(倫敦)、阿聯酋(杜拜) | 300 |
如果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
。