您好,登錄后才能下訂單哦!
Data Lake Analytics中如何使用DataWorks來調(diào)度DLA任務(wù),相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
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 的新用戶都有50T的免費流量,可以放心試用。開通DLA成功后,你會獲得一個用戶名和密碼, 然后在控制臺登錄就可以使用:
或者如果你是極客,更偏愛命令行,你也可以使用普通的 MySQL 客戶端就可以連接 DLA 了:
mysql -hservice.cn-region.datalakeanalytics.aliyuncs.com -P10000 -u<your-user-name> -p<your-password>
在這篇文章里面,我會使用 MySQL 命令行給大家演示 DLA 的功能。
開通DLA服務(wù)之后,您還需要開通DataWorks的服務(wù),目前DataWorks還在公測階段,放心使用。
然后您可以在您對應的DLA服務(wù)群里面找我們?nèi)魏我晃煌瑢W開通一下DLA + DataWorks的試用資格(目前這個功能還處于邀請試用的階段,沒有完全放開)。
如果目前還沒有專門DLA服務(wù)群的客戶,可以通過工單聯(lián)系我們。
為了演示如何在DataWorks上調(diào)度DLA的任務(wù),我們后面會用到一些測試數(shù)據(jù),這里我們用著名的TPCH的測試數(shù)據(jù)集, 數(shù)據(jù)保存在OSS上面。
通過MySQL命令行我們創(chuà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';
如下圖:
重復上述步驟,我們創(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ù)調(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ù),進行各種運維操作了。
看完上述內(nèi)容,你們掌握Data Lake Analytics中如何使用DataWorks來調(diào)度DLA任務(wù)的方法了嗎?如果還想學到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。