全部產品
Search
文件中心

MaxCompute:使用限制

更新時間:Jun 19, 2024

在使用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

歐美地區

德國(法蘭克福)

50

歐美地區

美國(矽谷)

100

歐美地區

美國(維吉尼亞)

50

歐美地區

英國(倫敦)

50

中東與印度

印度(孟買)

50

中東與印度

阿聯酋(杜拜)

50

SQL限制

在MaxCompute中開發SQL作業時的使用限制如下。

限制項

最大值/限制條件

分類

說明

表名長度

128位元組

長度限制

表名、列名中不能有特殊字元,必須以字母開頭,且只能使用英文小寫字母(a-z)、英文大寫字母(A-Z)、數字和底線(_)。

注釋長度

1024位元組

長度限制

長度不超過1024位元組的有效字串。

表的列定義

1200個

數量限制

單表的列定義個數最多為1200個。

單表分區數

60000個

數量限制

單表的分區個數最多為60000個。

表的分區層級

6級

數量限制

在表中建立的分區層次不能超過6級。

屏顯

10000行

數量限制

SELECT語句屏顯最多輸出10000行。

INSERT目標個數

256個

數量限制

MULTI-INSERT情境,目標表的數量限制為256個。

UNION ALL

256個

數量限制

UNION ALL情境,最多允許合并256個表。

MAPJOIN

128個

數量限制

MAPJOIN情境,最多允許串連128個小表。

MAPJOIN記憶體限制

512 MB

數量限制

MAPJOIN情境,所有小表的記憶體不能超過512 MB。

ptinsubq

1000行

數量限制

子查詢中存在分區列時,子查詢的返回結果不能超過1000行。

SQL語句長度

2 MB

長度限制

SQL語句的最大長度為2 MB。包括您使用SDK調用SQL的情境。

列記錄長度

8 MB

數量限制

表中單個單元的最大長度為8 MB。

IN的參數個數

1024

數量限制

IN的最大參數限制,例如in (1,2,3….,1024)。如果in(…)的參數過多,會影響編譯效能。1024為建議值,不是限制值。

jobconf.json

1 MB

長度限制

jobconf.json的大小為1 MB。當表包含的分區數量較多時,大小可能超過jobconf.json,超過1 MB。

視圖

不可寫

操作限制

視圖不支援寫入,不支援INSERT操作。

列的資料類型

不可修改

操作限制

不允許修改列的資料類型及列位置。

Java UDF函數

不允許為ABSTRACT或者STATIC

操作限制

Java UDF函數不能為ABSTRACTSTATIC

最多查詢分區個數

10000個

數量限制

最多查詢分區個數不能超過10000個。

SQL執行計畫長度

1 MB

長度限制

MaxCompute SQL產生的執行計畫不能超過1 MB,否則會觸發FAILED: ODPS-0010000:System internal error - The Size of Plan is too large報錯。

單作業最大執行時間

24小時

運行時間長度限制

預設情況下,SQL單個作業的最長已耗用時間為24小時,可以通過下面的參數設定,將單個作業的最長已耗用時間增加到72小時。目前SQL作業不能超過72小時,超過後會自動停止運行。

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

更多SQL資訊,請參見SQL

MapReduce限制

在MaxCompute中開發MapReduce作業時的使用限制如下。

邊界名邊界值分類配置項名稱預設值是否可配置說明
Instance記憶體佔用[256 MB,12 GB]記憶體限制odps.stage.mapper(reducer).memodps.stage.mapper(reducer).jvm.mem2048 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模式下:
  • 預設Map Instance個數為2,不能超過100。
  • 預設Reduce Instance個數為1,不能超過100。
  • 預設一路輸入下載記錄數100,不能超過10000。
重複讀取Resource次數64次數量限制-單個Map Instance或Reduce Instance重複讀一個Resource次數限制<=64次。
Resource位元組數2 GB長度限制-單個Job引用的Resource總計位元組數大小不超過2 GB。
Split Size大於等於1長度限制odps.stage.mapper.split.size256 MB架構會參考設定的Split Size值來劃分Map,決定Map的個數。
STRING列內容長度8 MB長度限制-MaxCompute表STRING列內容長度不允許超出限制。
Worker運行逾時時間[1,3600]時間限制odps.function.timeout600Map或者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 namecounter 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