一、 實驗概述
DataWorks (數據工場,原大數據開發套件DataIDE),是基於MaxCompute(原ODPS) 計算引擎的一站式大數據開發管理的平臺,它融合了數據集成、數據開發、數據管理、運維監控、機器學習等功能,提供了海量數據的離線加工分析、數據挖掘的能力,能幫助企業快速的搭建數據中心。
二、實驗目標
1)通過創建項目、同步數據、編寫SQL程序、配置調度任務、運維監控等環節,實現完整的數據處理流程。
2)能對DataWorks的主要功能有所瞭解,能夠按照實驗演示內容,獨立完成數據採集 、數據開發、任務運維等數據崗位常見的任務。
三、 實驗場景
模擬RDS數據庫爲生產系統,實現從生產系統抽取數據到ODPS中,進行數據自動化分析處理,最後展現處理結果。
第 1 章:實驗準備
1.1 申請阿里雲資源
在彈出的左側欄中,點擊 創建資源 按鈕,開始創建實驗資源。 資源創建過程需要1-3分鐘。完成實驗資源的創建後,用戶可以通過 實驗資源 查看實驗中所需的資源信息,例如:阿里雲賬號等。
1.2 申請實驗資源
1、 申請沙箱實驗資源 1)點擊【實驗資源】,查看本次實驗資源信息(MaxCompute資源、RDS資源)。如下圖: 2)在彈出的左側欄中,點擊 【創建資源】按鈕,開始創建實驗資源。 如下圖:
注意:實驗環境一旦開始創建則進入計時階段,建議學員先基本瞭解實驗具體的步驟、目的,真正開始做實驗時再進行創建。 3)創建資源,如下圖:(創建資源需要幾分鐘時間,請耐心等候……) 4)資源創建成功後,可通過【實驗資源】查看實驗中所需的實驗資源信息。如下圖: 注意:在本地保存下阿里雲賬號信息,包括資源中的項目名稱、企業別名、子用戶名稱、子用戶密碼、AK ID、AK Secret信息 沙箱實驗環境說明:
企業別名:即主賬號ID,在登錄時需要;
子用戶名稱和子用戶密碼:登錄實驗環境以及配置MaxCompute 數據源時需要;
AK ID和AK Secret:系統爲當前用戶分配的登錄驗證密鑰信息;
控制檯url:登錄實驗環境的地址;
實驗數據庫RDS實例:在配置 MaxCompute 數據源時需要;
實驗數據庫RDS鏈接地址:爲登錄數據庫的地址信息。
1.3 登錄實驗環境
1、使用實驗沙箱登錄
1)點擊實驗資源中的【控制檯url】,複製鏈接,在新的窗口打開,跳轉到登錄頁。 2)在登錄頁,輸入【實驗資源】中提供的賬號,格式爲:子用戶名稱@企業別名,再點擊【下一步】。如下圖: 3)輸入【實驗資源】中提供的的“子用戶密碼”,點擊【登錄】 4)登陸後,進入【管理控制檯】界面, 點擊左側菜單欄 【大數據(數加)】,再點擊【DataWorks】 5) 選中相應項目, 點擊【進入數據開發】 6) 進入數據開發環境 2、使用阿里雲賬號登錄
1) 打開瀏覽器,輸入阿里雲官網地址 www.aliyun.com,點擊右上角菜單【控制檯】: 2)使用自己的阿里雲官網賬號登陸控制檯,如果沒有賬號,請先實名註冊: 3)登陸後,進入【管理控制檯】界面, 點擊左側菜單欄 【大數據(數加)】,再點擊【DataWorks】 4)選中相應項目, 點擊【進入數據開發】。如果沒有項目,請先創建項目。
第 2 章:實驗詳情
2.1 創建項目
1、創建項目 注意:DataWorks是項目協作模式,只有阿里雲主賬號可以創建項目,其他子賬號僅作爲使用者在項目中操作。因沙箱實驗環境限制,用戶使用子賬號登錄,無權限創建項目。故實驗環境已默認創建完項目,此章節內容僅供瞭解。
如果沒有項目,創建項目步驟如下:
1)進入【管理控制檯】界面, 點擊左側菜單欄 【大數據(數加)】,再點擊【DataWorks】,然後在【項目列表】中選擇區域,再點擊【創建項目】。如下圖: 2)選擇region、計算引擎服務、DataWorks服務,付費方式根據自己的實際情況選擇,然後點擊【下一步】: 3)填寫項目相關信息:輸入“項目名稱”、“顯示名”以及“項目描述” 信息,然後點擊【創建項目】。 4)創建項目成功後,點擊【刷新列表】,即可看到項目列表,如下圖 5)在【項目列表】頁籤中,選中項目,點擊【進入數據開發】按鈕,開始數據開發工作。 也可點擊【概覽】,選中項目,點擊【進入數據開發】按鈕,開始數據開發工作。 6)初次打開需勾上協議條款,點擊【確認】,然後進入數據開發頁面
2.2 創建RDS數據庫
說明:本實驗利用阿里雲RDS數據庫,模擬構建生產系統。沙箱實驗環境中已默認創建完RDS數據庫實例,下面1)小節僅參考,直接進行 2)小節
1)創建RDS數據庫實例:
打開【管理控制檯】,在左側菜單欄中,點擊【雲計算基礎服務】,在下拉菜單中點擊【雲數據庫RDS版】,然後點擊右上角的【創建實例】按鈕。 依次選擇“付費類型”(按量付費)、“地域”(按照實驗資源分配地區)以及“數據庫類型”(MySQL)、“版本”(5.7)、“系列”(高可用版)、“可用區信息”(華東2可用區B): 選擇“網絡類型”(經典網絡)、“規格”(1核1GB)、“存儲空間” (最小5GB)、“數量”(選擇1) 點擊確認訂單,點擊進入【管理控制檯】,等待實例由“創建中”變成“運行中” (此過程需要幾分鐘,請耐心等待) 2) 創建數據庫
點擊左側欄數據庫管理,點擊創建數據庫按鈕 輸入“數據庫名稱”(自行命名)、選擇“支持字符集合”(實驗選擇“utf8”)等信息,點擊【創建】按鈕 3) 創建數據庫賬號
點擊左側菜單欄中的【賬號管理】,進入 “創建賬號” 界面 具體創建賬號參考示例:
① 輸入自定義“數據庫賬號”、賬號類型選擇“普通賬號” 選擇“授權數據庫”、自行“設置密碼”、“確認密碼” 然後點擊確定。 ② 點擊【確定】,等待系統處理:
③ 賬號狀態變更爲“激活”,類型爲“普通賬號”,所屬數據庫爲lab_db,擁有讀寫權限: 4) 登錄數據庫
點擊產品與服務,選擇數據管理DMS。 選擇左側欄中快捷登錄,RDS登錄。(注意:如果出現授權提示,點擊關閉比即可)
輸入網絡地址:端口、用戶名、用戶密碼(實驗中新建的數據庫用戶及對應密碼) 網絡地址爲RDS實例的內網鏈接地址:端口格式填入。 輸入完成點登錄,即可訪問數據庫操作工作臺,可執行相關操作
2.3 RDS數據導入
1)新建表。
登錄RDS數據庫,在頂部菜單欄中,點擊【SQL操作】,然後點擊下拉列表中的【SQL窗口】。 輸入SQL建表語句,創建表t_dml_data,用於模擬存儲業務系統的生產數據。
建表語句如下:
create table IF NOT EXISTS t_dml_data (
detail_id bigint,
sale_date datetime,
province VARCHAR (20),
city VARCHAR (20),
product_id bigint,
cnt bigint,
amt double,
PRIMARY KEY (detail_id)
);
點擊【執行】,建表成功後刷新左側列表,窗口可顯示剛建的表。 2)導入數據
點擊頂部菜單欄的【數據方案】,在下拉列表中點擊【導入】。 點擊【新增任務】,填寫“文件類型”、“數據庫”、“表”、“寫入模式”、“附件”等信息,然後點擊【開始】,執行數據導入任務。(注意:如果導入失敗,請將文件字符集改爲UTF-8格式重新導入) 如下圖,導入任務完成後,會顯示數據導入詳情。 關閉詳情,可看到該任務。 擊左側樹中的表名,選擇【打開表】,可看到表中的數據信息
2.4 DataWorks數據集成
2、DataWorks數據集成 注意: 只有項目管理員角色才能新增數據源,其他角色的成員僅能查看數據源。
1)點擊DataWorks進入DataWorks控制檯,選擇左側欄工作空間列表,點擊數據開發,然後選擇數據集成,進入頂部菜單欄中的【數據集成】頁面,點擊左側導航欄中的 【數據源】,再點擊右上角的 【新增數據源】,如圖: 2)選擇關係型數據庫“MySQL”, 在彈出框中填寫相關配置項,並確認已添加白名單。然後點擊【測試連通性】,若測試成功,點擊【確定】即可。
注意:RDS實例相關信息可點擊【實驗資源】查看。RDS實例購買者ID需要填主賬號ID(即企業別名);個人阿里雲賬戶可參考下面3)、4)、5)步驟來獲取相關信息 新建或編輯數據源,相關信息填寫完成後,(數據源名稱根據業務自定義即可),點擊“測試連通性”按鈕。如果彈出右側紅色彈框,說明白名單設置有問題。 點擊【點我查看如何添加白名單】,注意根據項目所在 Region 選擇相應的白名單 環境、信息配置成功後,點擊“測試連通性”會彈出右側成功的提示,然後點擊“完成”即可。 以下內容本實驗不用進行,提供給個人賬號操作使用
3)個人賬號查看RDS實例ID
在【管理控制檯】界面,點擊左側菜單欄【雲計算基礎服務】中的【雲數據庫RDS版】,在打開的實例列表中選中實例,點擊查看實例信息。 4) 個人賬號查看RDS實例購買者ID
在【管理控制檯】界面,點擊右上角顯示的登錄賬號,進入“安全設置”,查看”賬號ID”
2.5 DataWorks數據同步
1)打開【管理控制檯】,在左側菜單欄中點擊【大數據(數加)】,在下拉菜單中選擇【DataWorks】,然後在項目列表中選中項目,點擊【進入數據開發】。 2)點擊左側選項卡中的【任務開發】,然後點擊【新建】,選擇【新建業務流程】 3)輸入業務名稱,然後點擊【新建】。
說明:工作流任務是節點任務的集合,一個工作流任務中,可以創建多個節點任務,一個節點任務,可以完成一件事,而一個工作流任務,可以完成一個流程。 4)在節點組件中選擇【離線同步】,拖動到右側畫布中 然後輸入“節點名稱”,點擊【提交】。
5)雙擊節點,進行數據同步設置。
① 設置源表,數據源爲“odps_ds(mysql)”,表名爲“t_dml_data”,設置數據過濾條件"province<>'新疆'"。 ② 設置目標表,數據源爲“odps_first(odps)”,一鍵生成目標表(注意修改建表SQL的表名) 填寫目標表的分區信息。本示例中,分區爲變量,ds=${sdate},在右側【調度配置】中給該變量sdate賦值爲常量‘2017’,選擇清理規則【寫入前清理已有數據 Insert Overwrite】,設置重跑屬性爲運行成功或失敗皆可重跑,依賴上游節點選擇使用工作空間根節點。 ③ 字段映射。對字段映射關係進行配置,左側源表字段和右側目標表字段爲一一對應的關係,並且與字段順序無關。 ④ 設置通道控制信息。DMU是數據集成消耗資源的度量單位。本示例中設置任務併發數爲“5”、不限流”、錯誤記錄數超過“10條”,任務結束。然後進行下一步。
說明:如果數據源是線上的業務庫,建議不要將併發數設置過大,以防對線上庫造成影響;如果對數據同步速率特別在意,建議選擇較大的作業併發數。 ⑤ 配置完成後,預覽信息,如無誤,點擊【保存】。 6)同步數據。
節點設置完成後,點擊【運行】,帶參數測試運行。 選擇業務日期,然後點擊【運行】。因是一次性調度,而且抽取源表數據時,不是按時間設置數據過濾條件,故此處的業務日期選擇2017。 7)查看同步結果
當數據同步完成後,狀態變爲“成功”: 預覽表數據。在左側欄中,點擊公共表,搜索表名,然後選中數據表t_dml_data,點擊【數據預覽】即可看到數據,或點擊臨時查詢,新建ODPS SQL,根據下圖通過SQL語句查詢數據。 數據導入成功。
2.6 DataWorks數據開發
1、創建數據表 創建目標表t_dml_result,用於存儲數據分析後產生的結果。步驟如下:
點擊頂部菜單欄中的【臨時查詢】,然後點擊【新建】,選擇【ODPS SQL】; 輸入節點名稱,點擊【提交】,然後輸入建表語句建表。 建表語句如下:
create table IF NOT EXISTS t_dml_result (
province string,
product_id bigint,
cnt bigint
) partitioned by (sale_date string);
創建表後,可以在左側導航欄【表查詢】中,輸入表名進行搜索,查看錶信息。如下圖所示: 或者輸入如下語句進行檢查表 desc t_dml_result 或者通過數據地圖查看數據表信息。以上三種方法三選一即可。 2、 創建SQL任務 點擊頂部菜單欄中的【臨時查詢】,然後點擊【新建】,選擇【新建ODPS SQL】; 在彈出框中,輸入節點名稱,然後點擊【提交】;
雙擊節點對節點進行配置,新版本不許全表掃描,所以要增加設置:全表掃描。 在節點中編寫好SQL語句後,點擊右側菜單選項進行“自定義參數配置”,然後點擊【保存】並 【提交】。
說明:只有提交過的任務才能被調度執行。
注意:下圖中的調度類型一旦選定,不可再更改 自定義參數配置:$[add_months(yyyy-mm-dd,-12*4-8)]
說明:因源表t_dml_data中數據時間爲2015年5月,而調度執行時間爲2020年1月,故參數需往前推4年零8個月。
需根據實際實驗時間修改參數設置。
本SQL實現按省份和產品維度,對每天的銷售量進行彙總。代碼如下:
insert overwrite table t_dml_result partition (sale_date)
select province,
product_id,
sum(cnt) as cnt,
'${sdate}'as sale_date
from t_dml_data
where ds='2017' and substr(sale_date,1,10)='${sdate}'
group by product_id,province;
配置完成後,注意依賴關係: 然後點擊提交,開始運行節點。 檢查表信息,在臨時節點輸入sql檢查語句 set odps.sql.allow.fullscan=true; select * from t_dml_result 3 、本地數據上傳 在前面章節中,我們通過數據同步的方式獲取了數據源。如果直接從本地文件導入到MaxCompute呢,又該如何操作?
1)建表
① 在【臨時查詢】頁面點擊【新建】,選擇【ODPS SQL】。 ② 輸入節點名稱,點擊“提交”。
③ 輸入建表語句,並點擊【運行】 建表語句如下:
CREATE TABLE t_dml_data_tmp (
detail_id BIGINT,
sale_date DATETIME ,
province STRING ,
city STRING ,
product_id BIGINT,
cnt BIGINT ,
amt DOUBLE
)
PARTITIONED BY (pt STRING);
2)上傳數據
- 點擊頂部菜單欄的【數據開發】,然後進行數據導入
2 選擇分隔符號“逗號”、原始字符集“UTF-8”、導入起始行“1”,並且去掉首行爲標題的勾勾,然後點擊【下一步】。 2. 輸入表名及分區,點擊【導入】。 3. 導入成功後,查看數據結果。 執行SQL語句如下:
set odps.sql.allow.fullscan=true;
select * from t_dml_data_tmp;
查看結果如下:
4 、數據表管理 點擊菜單欄【表管理】,可以查看錶信息。
① 查看錶
點擊【生產賬號的表】選項卡,搜索表名,點擊表“t_dml_data_tmp”即可查看錶的詳情信息。 ② 收藏表
通過菜單欄中數據地圖進入數據管理頁面,在表詳情頁搜索表名稱可以查看錶,點擊【收藏】即可,也可在此單擊【取消收藏】。 ③ 表權限申請
在表詳情頁中點擊權限管理,可進行權限申請。 填寫申請授權彈出框中的各配置項,點擊【確定】提交,然後等待審批。如下圖所示: 說明:
權限歸屬人:支持本人申請和代理申請。
本人申請:選擇該項,審批通過後權限歸屬於當前用戶。
代理申請:選擇代理申請,需填寫代申請賬號(系統右上角顯示的登錄名)。審批通過後權限歸屬於被代理人。
權限有效期:申請表權限的時長,單位爲天,不填則默認爲永久。超過申請權限時長時,該權限將被系統自動回收。
申請理由:請簡要填寫申請理由以便更快地通過審批。
可在【數據管理】>【權限管理】> 【申請記錄】中查看申請狀態。
2.8 任務運維
1 、運維中心 有兩種方式可進入運維中心界面。
方式一:在數據開發頁面,點擊左上角【前往運維】,進入後即可查看到運維大屏。 2、 任務列表 點擊左側菜單欄中的【任務列表】,選擇“任務類型”和“責任人”,可對任務進行篩選。 選中某個任務,可執行“測試”、“補數據”等操作。 如點擊“補數據”,可補歷史數據。
本例中將演示補2015-5-2和2015-5-3日的數,則會按天生成2個實例。
如下圖,設置業務日期爲2017-08-01至2017-08-02,點擊【確定】,並【確認】。 自動跳轉至【補數據實例】頁面,等待狀態由“運行中”變爲“成功”。 如要驗證補數結果,可前往“數據開發”頁面查詢表數據,通過如下語句:set odps.sql.allow.fullscan=true; select sale_data,count(*) from t_dml_result group by sale_data;。 3 、任務運維 選中左側菜單欄中的【任務運維】選項卡,點擊相應實例,可重跑任務。下圖以【補數據實例】爲例說明: 點擊任務,可以查看任務運行日誌。
第 3 章:課後作業
3.1 課後作業
在實際場景中,作爲生產系統,數據每時每刻都在發生。那麼在本實驗中,要把新產生的數據從RDS同步到MaxCompute進行大數據處理,如何改進更合理?
答案供參考:
1、“IDE同步”任務的調度類型需改爲“週期性調度”;
2、源表數據抽取時,根據時間設置“數據過濾”條件;
3、目標表的分區,由常量改爲變量;
4、“IDE開發”中where條件加分區,避免全表掃描;
5、控制同步任務的速率以及作業併發數。
第 4 章:課後練習
4.1 課後任務
1、創建一個週期性調度的數據同步任務(數據每天增量抽取);
2、在調度配置中,將跨週期依賴設置爲“自依賴”,看看實驗效果;