剛剛順利苟過了阿裡ACP, 主要複習政策是多次熟悉阿裡雲提供大資料官方教程,官方文檔,并對核心環境做總結。
社群關于複習提綱的内容以及比較詳細了,這裡梳理下存在關鍵細節的考點,也給大家一些參考。
關鍵數字:
- 單表分區層級最多6級。單表分區數最多允許60000個分區。一次查詢最多查詢分區數為10000個分區。
- MaxCompute支援上傳的單個資源大小上限為500MB,
- 當使用Select語句屏顯時,目前最多隻能顯示10000行結果
- 單個SQL中最多可以寫256路輸出,
- MaxCompute在MapJoin中最多支援指定8張小表,否則報文法錯誤。如果使用MapJoin,則所有小表占用的記憶體總和不得超過512MB。
- 名稱的長度不超過128位元組。一張表最多允許60000個分區,單表的分區層次不能超過6級。注釋内容是長度不超過1024位元組的有效字元串
- 表的最大列數為1200列。
sql文法:
Q:在 MaxCompute SQL 執行過程中,報錯為Table xx has n columns, but query has m columns。
A:MaxCompute SQL 使用 INSERT INTO/OVERWRITE TABLE XXX SELECT 插入資料時,需要保證 SELECT查詢出來的字段和插入的表的字段,包括順序、字段類型都能比對,當然總的字段數量上也要能對的上。
目前 MaxCompute 不支援指定插入表中某幾個字段,其他字段為 NULL 或者其他預設值的情況,您可以在 SELECT 的時候設定成 NULL,例如:SELECT ‘a’,NULL FROM XX。
Q:用insert into…values...語句插入表記錄報錯,請問如何向 MaxCompute 表中插入記錄?
A:向 MaxCompute 表中插入記錄的操作步驟如下:
建立一個表, 例如 dual 表。語句如下:
createtabledual(cntbigint);
insertintotabledualselectcount(*) as cnt from dual;
執行完上述語句便生成了一張有 1 條記錄的 dual 表。
執行下述語句,即可向 MaxCompute 表中插入記錄。
insert into table xxxx select 1,2,3 from dual;
Q:用insert into partition時,如果分區不存在,如何操作
A: 用insert into partition時,如果分區不存在,如何會自動建立分區
- 分布式環境下,使用動态分區功能的SQL中,單個程序最多隻能輸出512個動态分區,否則會引發運作時異常。
- 動态生成的分區值不允許為NULL,也不支援含特殊字元和中文,否則會引發運作時異常FAILED: ODPS-0123031:Partition exception - invalid dynamic partition value: province=xxx。
- 如果目标表有多級分區,在運作INSERT語句時允許指定部分分區為靜态,但是靜态分區必須是進階分區
- MaxCompute 1.0在進行動态分區時,如果分區列的類型與對應SELECT清單中列的類型不嚴格一緻,會發生報錯。MaxCompute 2.0則支援隐式類型轉換。