好多同學在使用maxcompute時,對産品的應用限制并不了解。這裡,我們将給出maxcompute産品的詳細應用限制清單。如有遺漏,還請大家補充:
命名規範:<b>原則上</b>,項目(project),表(table),函數(function),資源(resource),分區(partition),列的名稱都不能有特殊字元,隻能用英文的a-z,a-z及數字和下劃線_,且以字母開頭,名稱的長度不超過128位元組。實際情況可能會略有不同,但我們仍然建議您遵循這個原則進行命名。
task并發度控制:通常情況下,maxcompute會在項目級别做task并發度控制,任意項目下,使用者在同一時刻最多隻能送出1000個task。對于graph及部分mpi類型的pai作業,最大隻允許1000個程序的作業。
列限制:表string列内容長度不允許超過8mb;
sql:
多路輸出限制:單個sql裡最多可以寫128路輸出,超過128路報文法錯誤;
動态輸出分區限制:任意動态分區sql不允許生成超過2000個動态分區,否則引發運作時異常;
select屏顯限制:select屏顯結果最多隻有10000條輸出;
order by語句後必須接limit;
sort by必須與distribute by配合使用;
最多允許128路union all,超過此限制報文法錯誤;
maxcompute 的join支援多路間接,但不支援笛卡爾積,即無on條件的連結;
maxcompute中的join連接配接條件,隻允許and連接配接的等值條件,并且最多支援16路join操作。隻有在mapjoin中,可以使用不等值連接配接或者使用or連接配接多個條件;
目前maxcompute 在mapjoin中最多支援指定6張小表,否則報文法錯誤;
如果使用mapjoin,則所有小表占用的記憶體總和不得超過512mb。請注意由于maxcompute 是壓縮存儲,是以小表在被加載到記憶體後,資料大小會急劇膨脹。此處的512mb限制是加載到記憶體後的空間大小;
多個表join時,最左邊的兩個表不能同時是mapjoin的表;
mapreduce限制:
單個任務引用的資源數量不超過512個,分區表按照一個機關計算。
單個任務引用的資源總計位元組數大小不超過64mb。
單個任務的輸入路數不能超過128,單個任務的輸出路數不能超過128路。
單個任務中自定義counter的數量不能超過64。
單個map或reduce worker占用memory預設為2048mb,範圍[256mb, 12gb]。
單個map或reduce worker重複讀一個資源次數限制 <=64次。
本地運作模式下,map worker個數不能超過100;reduce worker個數不能超過100;預設一路輸入下載下傳記錄數100。
graph應用限制:
單個job引用的resource數量不超過256個,table、archive按照一個機關計算;
單個job引用的resource總計位元組數大小不超過512m;
單個job的輸入路數不能超過1024(輸入表的個數不能超過64),單個job的輸出路數不能超過256;
多路輸出中指定的label不能為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,範圍[256m, 12g];
單個worker重複讀一個resource次數限制不大于64次;
split size預設為64m,使用者可設定,範圍:0 < split_size <= (9223372036854775807 >> 20);
