閱讀618 返回首頁    go 阿裏雲 go 技術社區[雲棲]


5.3 海量數據導出__第五章 Data Pipeline_使用手冊_分析型數據庫-阿裏雲

分析型數據庫的查詢模式適合在海量數據中進行分析計算後輸出適量數據,若需要輸出的數據量達到一定規模,分析型數據庫提供數據導出(DUMP)的方式。注意目前DUMP方式中不能使用針對非分區列的聚合函數。

通過類DML語句導出到MaxCompute

前提須知

  • 分析型數據庫通過一個固定雲賬號進行數據導出到MaxCompute(與數據從MaxCompute導入到AnalyticDB情況類似)。各個專有雲的導出賬號名參照專有雲的相關配置文檔,一般為test1000000009@aliyun.com(與導入賬號一致),公共雲導出賬號為garuda_data@aliyun.com。

  • 需要給導入賬號授予目標MaxCompute項目的createInstance權限,以及目標表的describe、select、alter、update、drop權限。

授權命令:

  1. --注意正確輸入需要授權的表命名、project和正確的雲賬號
  2. USE prj_name;--表所屬ODPS project
  3. ADD USER ALIYUN$xxxx@aliyun.com;
  4. GRANT createInstance ON project prj_name TO USER ALIYUN$xxxx@aliyun.com;
  5. GRANT Describe,Select,alter,update,drop ON TABLE table_name TO USER ALIYUN$xxxx@aliyun.com;

導出命令

類似於普通的SQL查詢語句,用戶也可通過類似於DML語句進行數據導出。

語法格式:

  1. DUMP DATA
  2. [OVERWRITE] INTO 'odps://project_name/table_name'
  3. SELECT C1, C2 FROM DB1.TABLE1 WHERE C1 = 'xxxx' LIMIT N

通過類DML語句導出到OSS(當前為公測功能,非商業化使用)

導出到OSS時,需要持有對該oss bucket有寫權限的AK(為安全起見,必須使用子賬號的AK)。

語法格式:

  1. /*+ dump-oss-accesskey-id=oss的ACCESS_KEY_ID,
  2. dump-oss-accesskey-secret=oss的ACCESS_KEY_SECRET*/ DUMP DATA
  3. [OVERWRITE] INTO 'oss://endpoint_domain/bulket_name/filename'
  4. SELECT C1, C2 FROM DB1.TABLE1 WHERE C1 = 'xxxx' LIMIT N

說明:

  • endpoint_domain是與ads同一個region的oss的內網endpoint,跨region訪問時需要填寫oss的公網endpoint(部分region之間可能無法跨region訪問oss)。
  • 部分情況下,目前可能會dump oss失敗(dump下的sql中有分區傾斜時)

關於返回數據行數

導出方式對海量數據的計算輸出具有良好的性能(百萬行數據導出在數百毫秒數據級),但是,對於數據精確度有一定犧牲,即實際返回的數據行數,可能是不完全精確。以限製導出行數為1000為例(LIMIT 1000):

  • 實際數據行數可能稍大於1000,例如此時有120個數據分片,則等同於每個分區明確指定”LIMIT 9”,最多肯能返回1080
  • 實際數據行數可能稍小於1000,如果符合條件的行數的總數小於1000
  • 實際數據行數可能稍小於1000,如果數據分片很均勻,例如此時有120個數據分片,如果某些分片返回數據行小於9的話,則等同於每個分區明確指定”LIMIT 9”

最後更新:2016-11-29 18:01:46

  上一篇:go 5.2 數據導入狀態查詢__第五章 Data Pipeline_使用手冊_分析型數據庫-阿裏雲
  下一篇:go 6.1 用戶賬號類型與用戶管理__第六章 用戶與權限_使用手冊_分析型數據庫-阿裏雲