閱讀350 返回首頁    go windows


5.1 數據的導入__第五章 Data Pipeline_使用手冊_分析型數據庫-阿裏雲

分析型數據庫支持多種數據入庫方式,包括但不限於:

(1)內置將MaxCompute中的海量數據快速批量導入;

(2)支持標準的insert/delete語法,可使用用戶程序、Kettle等第三方工具寫入實時寫入表;

(3)支持阿裏雲數據集成(CDP),將各類數據源導入批量導入表或實時寫入表。阿裏雲大數據開發平台;

(4)支持阿裏雲數據傳輸(DTS),從阿裏雲RDS實時同步數據變更到分析型數據庫。

本章節主要描述(1)和(3)兩種數據導入方式,其餘導入方式詳見本手冊第八章。

SQL方式將MaxCompute數據導入

分析型數據庫目前內置支持從阿裏雲外售的MaxCompute(原ODPS)中導入數據。

將MaxCompute數據導入分析型數據庫有幾種方法:直接使用SQL命令進行導入,或通過MDS for AnalyticDB界麵進行導入、通過數據集成(原CDP)配置job進行導入。

通過DMS for AnalyticDB界麵導入數據已在《快速入門》進行了介紹;通過數據集成導入數據可以參考下一小章節。下麵主要詳細介紹通過SQL命令將MaxCompute數據導入AnalyticDB。

步驟一: 準備MaxCompute表或分區。

首先我們需要創建好數據源頭的MaxCompute表(可以是分區表或非分區表,目前要求AnalyticDB中的字段名稱和MaxCompute表中的字段名稱一致),並在表中準備好要導入的數據。

如在MaxCompute中創建一個表:

  1. use projecta;--在MaxCompute的某個project中創建表
  2. CREATE TABLE
  3. odps2ads_test (
  4. user_id bigint ,
  5. amt bigint ,
  6. num bigint ,
  7. cat_id bigint ,
  8. thedate bigint
  9. )
  10. PARTITIONED BY(dt STRING);

往表中導入數據並創建分區,如:dt=’20160808’。

步驟二:賬號授權。

首次導入一個新的MaxCompute表時,需要在MaxCompute中將表Describe和Select權限授權給AnalyticDB的導入賬號。公共雲導入賬號為garuda_build@aliyun.com以及garuda_data@aliyun.com(兩個都需要授權)。各個專有雲的導入賬號名參照專有雲的相關配置文檔,一般為test1000000009@aliyun.com。

授權命令:

  1. USE projecta;--表所屬ODPS project
  2. ADD USER ALIYUN$xxxx@aliyun.com;--輸入正確的雲賬號
  3. GRANT Describe,Select ON TABLE table_name TO USER ALIYUN$xxxx@aliyun.com;--輸入需要賦權的表和正確的雲賬號

另外為了保護用戶的數據安全,AnalyticDB目前僅允許導入操作者為Proejct Owner的ODPS Project的數據,或者操作者為MaxCompute表的owner(大部分專有雲無此限製)。

步驟三:準備AnalyticDB表,注意創建時更新方式屬性為“批量更新”,同時把表的Load Data權限授權給導入操作者(一把表創建者都默認有該權限)。

如表:

  1. CREATE TABLE db_name.odps2ads_test (
  2. user_id bigint,
  3. amt int,
  4. num int,
  5. cat_id int,
  6. thedate int,
  7. primary key (user_id)
  8. )
  9. PARTITION BY HASH KEY(user_id)
  10. PARTITION NUM 40
  11. TABLEGROUP group_name
  12. options (updateType='batch');
  13. --注意指定好數據庫名和表組名

步驟四:在AnalyticDB中通過SQL命令導入數據。

語法格式:

  1. LOAD DATA
  2. FROM 'sourcepath'
  3. [IN VERSION dataVersion]
  4. [OVERWRITE] INTO TABLE tablename [PARTITION (partition_name,...)]

說明:

  • 如果使用MaxCompute(原ODPS)數據源,則sourcepath為:

    1. odps://<project>/<table>/[<partition-1=v1>/.../<partition-n=vn>]
    • ODPS項目名稱 project
    • ODPS表名 table
    • ODPS分區 partition-n=vn ,可以是多級任意類型分區。
  • 數據版本dataVersion,是分析型數據庫管理一次導入數據用的批次號,可用於未來可能開放的數據回滾等feature,通常情況下可以不需要填寫。

    • 數據版本必須是long型,且取值在表上單調遞增。
    • 如果不指定則取當前時間(秒),格式是 yyyyMMddHHmss ,如 20140812080000
  • 覆蓋導入選項( OVERWRITE ),導入時如果指定數據日期的表在分析型數據庫線上已存在,則返回異常,除非顯示指定覆蓋。
  • 分析型數據庫表名( tablename ),格式 table_schema.table_name ,其中 table_name 是分析型數據庫表名, table_schema 是表所屬DB名,表名不區分大小寫。
  • PARTITION,分析型數據庫表分區,分區格式 partition_column=partition_value ,其中 partition_column 是分區列名, partition_value 是分區值

    • 分區值必須是 long 型;
    • 分區值不存在時表示動態分區,例如第一級hash分區;
    • 不區分大小寫;
    • 目前最多支持二級分區。
  • 執行返回值: ‘‘、,任務ID,用於後續查詢導入狀態.任務ID是唯一標識該導入任務,返回的是字符串,最長256字節。

示例:

  1. LOAD DATA
  2. FROM 'odps://<project>/odps2ads_test/dt=20160808'
  3. INTO TABLE db_name.odps2ads_test
  4. --注意<project> 填寫MaxCompute表所屬的項目名稱
  5. `

步驟五:查看成功導入的數據。

通過數據集成(CDP)將RDS等其他數據源的數據導入

當表的數據源是RDS、OSS等其它的雲係統,我們可以通過阿裏雲的數據集成(原CDP)產品進行數據同步。

批量更新表導入

專有雲上批量導入

專有雲上可以通過大數據開發套件的數據同步任務進行操作,數據同步任務即通過封裝數據集成實現數據導入。具體步驟請看“大數據開發套件”的用戶指南相關數據源配置和數據同步任務配置章節。

前提條件:

  • 分析型數據庫目標表更新方式是“批量更新”。
  • 在分析型數據庫中給MaxCompute的base_meta這個project的owner賬號至少授予表的Load Data權限,base_meta的owner賬號信息可以在CMDB中查到。

注意“大數據開發套件”中數據同步任務目標為ads數據源的“導入模式”配置項需要選擇“批量導入”。

公共雲上批量導入

公共雲上可在 https://www.aliyun.com/product/cdp/ 上開通數據集成(可能需要申請公測),

前提條件:

  • 分析型數據庫目標表更新方式是“批量更新”。
  • 在分析型數據庫中給cloud-data-pipeline@aliyun-inner.com這個賬號至少授予表的Load Data權限。

數據集成配置示例:

  1. {
  2. "type": "job",
  3. "traceId": "rds to ads job test",
  4. "version": "1.0",
  5. "configuration": {
  6. "setting": {
  7. },
  8. "reader": {
  9. "plugin": "mysql",
  10. "parameter": {
  11. "instanceName": "你的RDS的實例名",
  12. "database": "RDS數據庫名",
  13. "table": "RDS表名",
  14. "splitPk": "任意一個列的名字",
  15. "username": "RDS用戶名",
  16. "password": "RDS密碼",
  17. "column": ["*"],
  18. }
  19. },
  20. "writer": {
  21. "plugin": "ads",
  22. "parameter": {
  23. "url": "在分析型數據庫的控製台中選擇數據庫時提供的連接信息",
  24. "schema": "分析型數據庫數據庫名",
  25. "table": "分析型數據庫表名",
  26. "username": "你的access key id",
  27. "password": "你的access key secret",
  28. "partition": "",
  29. "lifeCycle": 2,
  30. "overWrite": true
  31. }
  32. }
  33. }
  34. }

運行該job即可。

結束批量導入任務

用戶可以自行結束批量導入任務,運行如下命令:

  1. kill loaddata 'jobId'

其中jobId為該任務的任務ID(load data命令返回值)。

實時更新表導入

專有雲上實時導入

專有雲上可以通過大數據開發套件的數據同步任務進行操作,數據同步任務即通過封裝數據集成實現數據導入。具體步驟請看“大數據開發套件”的用戶指南相關數據源配置和數據同步任務配置章節。

前提條件:

  • 分析型數據庫目標表更新方式是“實時更新”。
  • 在分析型數據庫中給MaxCompute的base_meta這個project的owner賬號至少授予表的Load Data權限,base_meta的owner賬號信息可以在CMDB中查到。

注意“大數據開發套件”中數據同步任務目標為ads數據源的“導入模式”配置項需要選擇“實時導入”。

公共雲上實時導入

前提條件:

  • 分析型數據庫目標表更新方式是“實時更新”。
  • 在分析型數據庫中給cloud-data-pipeline@aliyun-inner.com這個賬號至少授予表的Load Data權限。

數據集成配置示例:

reader配置與前麵批量導入的配置一樣,writer配置需要變為(以原表列和目標表列相同為例,若不同需要在column選項中配置Mapping):

  1. "writer": {
  2. "name": "adswriter",
  3. "parameter": {
  4. "writeMode": "insert",
  5. "url": "在分析型數據庫的控製台中選擇數據庫時提供的連接信息",
  6. "schema": "分析型數據庫數據庫名",
  7. "table": "分析型數據庫表名",
  8. "column": ["*"],
  9. "username": "你的access key id",
  10. "password": "你的access key secret",
  11. "partition": "id,ds=2015"
  12. }

其他數據導入方式

用戶亦可利用阿裏雲數據傳輸(DTS)進行RDS到分析型數據庫的實時數據同步(請參照手冊第八章的相關內容)。

分析型數據庫亦兼容通過kettle等第三方工具,或用戶自行編寫的程序將數據導入/寫入實時寫入表。

另外,分析型數據庫進行實時插入和刪除時,不支持事務,並且僅遵循最終一致性的設計,所以分析型數據庫並不能作為OLTP係統使用。

最後更新:2016-12-06 11:56:37

  上一篇:go 4.4 多計算引擎和Hint__第四章 DML_使用手冊_分析型數據庫-阿裏雲
  下一篇:go 5.2 數據導入狀態查詢__第五章 Data Pipeline_使用手冊_分析型數據庫-阿裏雲