大數據ACP總結(一)

剛剛順利苟過了阿里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則支持隱式類型轉換。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章