Data Lake Analytics: 使用DataWorks来调度DLA任务
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
DataWorks作為阿里云上廣受歡迎的大數(shù)據(jù)開發(fā)調(diào)度服務(wù),最近加入了對于Data Lake Analytics的支持,意味著所有Data Lake Analytics的客戶可以獲得任務(wù)開發(fā)、任務(wù)依賴關(guān)系管理、任務(wù)調(diào)度、任務(wù)運維等等全方位強大的能力,今天就給大家介紹一下如何使用DataWorks來調(diào)度DLA的腳本任務(wù)。
開通DLA
在開始之前我們要有一個?DLA?的賬號,目前 DLA 的新用戶都有50T的免費流量,可以放心試用。開通DLA成功后,你會獲得一個用戶名和密碼, 然后在控制臺登錄就可以使用:
或者如果你是極客,更偏愛命令行,你也可以使用普通的 MySQL 客戶端就可以連接 DLA 了:
mysql -hservice.cn-region.datalakeanalytics.aliyuncs.com -P10000 -u<your-user-name> -p<your-password>在這篇文章里面,我會使用 MySQL 命令行給大家演示 DLA 的功能。
申請試用 DataWorks + DLA
開通DLA服務(wù)之后,您還需要開通DataWorks的服務(wù),目前DataWorks還在公測階段,放心使用。
然后您可以在您對應(yīng)的DLA服務(wù)群里面找我們?nèi)魏我晃煌瑢W開通一下DLA + DataWorks的試用資格(目前這個功能還處于邀請試用的階段,沒有完全放開)。
如果目前還沒有專門DLA服務(wù)群的客戶,可以通過工單聯(lián)系我們。
DLA數(shù)據(jù)、庫、表準備
為了演示如何在DataWorks上調(diào)度DLA的任務(wù),我們后面會用到一些測試數(shù)據(jù),這里我們用著名的TPCH的測試數(shù)據(jù)集, 數(shù)據(jù)保存在OSS上面。
通過MySQL命令行我們創(chuàng)建對應(yīng)的庫、表:
CREATE SCHEMA dataworks_demo with DBPROPERTIES(CATALOG = 'oss',LOCATION = 'oss://test-bucket/datasets/' );use dataworks_demo; CREATE EXTERNAL TABLE IF NOT EXISTS orders (O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE DATE, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION 'oss://test-bucket/datasets/tpch/1x/text_string/orders_text/';-- 結(jié)果表 finished_orders CREATE EXTERNAL TABLE IF NOT EXISTS finished_orders (O_ORDERKEY INT, O_TOTALPRICE DOUBLE ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION 'oss://test-bucket/datasets/dataworks_demo/finished_orders/';-- 結(jié)果表 high_value_finished_orders CREATE EXTERNAL TABLE IF NOT EXISTS high_value_finished_orders (O_ORDERKEY INT, O_TOTALPRICE DOUBLE ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION 'oss://test-bucket/datasets/dataworks_demo/high_value_finished_orders/';任務(wù)調(diào)度其中一個重要的功能是任務(wù)之間的依賴,為了演示這個功能,我們這里會在DataWorks里面創(chuàng)建兩個DLA任務(wù), 我們的表、任務(wù)之間的關(guān)系如下圖:
- 任務(wù)一: 我們從orders表清洗出已經(jīng)完成的訂單:?o_orderstatus = 'F'?, 并寫入 finished_orders 表
 - 任務(wù)二: 再從 finished_orders 表里面找出總價大于10000的訂單:?o_totalprice > 10000, 并寫入?high_value_finished_orders?表
 
關(guān)于如何使用DLA分析OSS數(shù)據(jù)更詳細的信息可以參考:
- Data Lake Analytics + OSS數(shù)據(jù)文件格式處理大全:?https://yq.aliyun.com/articles/623246
 - 使用Data Lake Analytics + OSS分析CSV格式的TPC-H數(shù)據(jù)集:?https://yq.aliyun.com/articles/623282
 
在 DataWorks 上創(chuàng)建 DLA 任務(wù)
在開通了?DataWorks + DLA?的功能后,我們可以在DataWorks的數(shù)據(jù)開發(fā)IDE里面創(chuàng)建DLA的任務(wù)了,如下圖:
我們把第一個任務(wù)命名為:?finished_orders?, 點擊確定會進入一個SQL編輯的頁面,要寫DLA SQL一定要告訴DataWorks我們寫的SQL運行在哪個DLA的服務(wù)上,這個在DataWorks里面被包裝成了"數(shù)據(jù)源"的概念:
DataWorks的規(guī)范是任務(wù)的名稱跟任務(wù)的輸出表的名稱保持一致。
剛進來的時候沒有數(shù)據(jù)源,點擊新建數(shù)據(jù)源:
填寫必要的信息點擊確定完成。
DataWorks為了安全的考慮,對可以連接的服務(wù)進行了安全控制,因此我們需要把我們要連的DLA的地址+端口加到白名單里面去,這個配置是在DataWorks工作空間的配置里面:
具體配置如下(需要換成你實際的IP+端口):
這里需要注意一下,工作空間配置只有工作空間管理員才有權(quán)限。
做了這么多之后,我們終于可以在編輯頁面看到DLA的數(shù)據(jù)源了,下面我們在?finished_orders?的任務(wù)里面填入如下SQL, 并點擊執(zhí)行:
use dataworks_demo; insert into finished_orders select O_ORDERKEY, O_TOTALPRICE from orders where O_ORDERSTATUS = 'F';如下圖:
重復(fù)上述步驟,我們創(chuàng)建第二個任務(wù): high_value_finished_orders:
use dataworks_demo; insert into high_value_finished_orders select * from finished_orders where O_TOTALPRICE > 10000;配置任務(wù)依賴
單個任務(wù)單次運行沒什么太大意思,任務(wù)調(diào)度的核心在于多個任務(wù)按照指定的依賴關(guān)系在指定的時間進行運行,下面我們讓:?task_finished_orders?在每天半夜2點開始運行:
high_value_finished_orders?在?finished_orders?成功運行之后再運行:
任務(wù)發(fā)布
任務(wù)配置好之后,就可以進行任務(wù)的發(fā)布、運維了。任務(wù)要發(fā)布首先必須提交:
提交之后,我們在待發(fā)布列表可以看到所有待發(fā)布的任務(wù):
選擇我們剛剛提交的兩個任務(wù),我們就可以發(fā)布了:
在發(fā)布列表頁面可以查看我們剛剛的發(fā)布是否成功:
發(fā)布成功之后,我們就可以進入任務(wù)運維頁面查看我們的任務(wù),進行各種運維操作了。
總結(jié)
在這篇文章里面,我?guī)Т蠹乙黄痼w驗了一下如何用 DataWorks 來開發(fā)、調(diào)度DLA的任務(wù),有了這個能力之后大家可以更方便地進行每天任務(wù)的開發(fā)、運維了。
原文鏈接
轉(zhuǎn)載于:https://my.oschina.net/u/1464083/blog/3020948
總結(jié)
以上是生活随笔為你收集整理的Data Lake Analytics: 使用DataWorks来调度DLA任务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: spring ioc原理解析
 - 下一篇: 通过powerdns实现主机名解析