dataworks 簡介
本文将為您介紹什麼是DataWorks,以及DataWorks的功能、限制與限制。
DataWorks(資料工場,原大資料開發套件)是阿裡雲數加重要的PaaS平台産品,提供資料內建、資料開發、資料管理、資料治理、資料分享等全方位的産品服務,一站式開發管理的界面,幫助企業專注于資料價值的挖掘和探索。
DataWorks基于MaxCompute作為核心的計算、存儲引擎,提供了海量資料的離線加工分析、資料挖掘的能力,詳情請參見MaxCompute簡介。
通過DataWorks,可對資料進行傳輸、轉換、內建的操作,從不同的資料存儲引入資料,對資料進行轉化和開發,最後将資料輸送到其他資料系統。
目錄清單
我這裡主要介紹一下業務流程的目錄清單以及其作用
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLyUjN3MTN1ETM1ETMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
這裡面主要關注資料內建、資料開發、表、資源、函數,至于算法和控制,目前我這塊還沒去研究。
-
資料內建
資料內建主要是用來做資料同步的,支援多種資料源,如 redis ,mysql,hbase 等。
-
資料開發
這裡面主要進行一些腳本的開發,一般常用的是 ODPS SQL,與Hive SQL文法基本一緻,适用于海量資料(TB級别),實時性要求不高的場合,它的每個作業的準備,送出等階段要花費較長時間, 是以要求每秒處理幾千至數萬筆事務的業務是不能用ODPS SQL完成的;ODPS SQL采用的是類似于SQL的文法,可以看作是标準SQL的子集,但不能是以簡單的把ODPS SQL等價成一個資料庫,它在很多方面并不具備資料庫的特征。
-
表
這裡面一般會建立流程中産出的表
-
資源
這裡基本存放一些不同語言開發的包,像我們 java 開發人員一般主要使用 udf,udtf以及udaf.
- 函數
一般這個地方與資源配合使用,用于聲明使用者自定義的函數。
如何開發一個工作流
我想大家最看重的就是這一塊,如何開發一個工作流,我們假設一個場景(用于講解,盡可能的簡單):
需要統計某個頁面的 pv,uv 情況,假定表字段如下:
- user_id
- page_id
- create_time
若是有人說這麼簡單,為啥用 dataworks 呢?一般來說,一個發展比較好的企業埋點資料非常大,普通的資料庫基本無法進行處理運算,隻能借助大資料的處理方案,對于一個創業期的,發展還不錯的公司,若自己搭建一套大資料體系無疑是成本效益極低的,所幸阿裡雲平台的數加有很多的解決方案。
閑話不多說,對于這樣的一個場景,我們該如何去處理?下面的流程圖是我給出的一個方案:
表建立
選擇表> 建立表,選擇 DDL 模式
CREATE TABLE IF NOT EXISTS data_collection(
user_id BIGINT COMMENT '使用者 ID',
page_id BIGINT COMMENT ' 頁面 ID',
create_time DATETIME COMMENT '建立時間'
)COMMENT '埋點記錄表' PARTITIONED BY(pt STRING);
自動解析如下圖所示
中間表如是,腳本如下:
CREATE TABLE IF NOT EXISTS day_pv_uv(
page_id BIGINT COMMENT ' 頁面 ID',
pv BIGINT COMMENT 'pv',
uv BIGINT COMMENT 'uv'
)COMMENT '每日 pv uv' PARTITIONED BY(pt STRING);
同步資料到數加
選擇資料內建>建立資料內建節點>資料同步
資料源那邊選擇自己的資料源和埋點表
統計 pv uv 并寫入中間表
選擇資料開發>建立資料開發節點>ODPS SQL,這邊直接寫 hsql 将處理好的資料放入中間表
INSERT OVERWRITE TABLE day_pv_uv
select page_id,count(user_id) as pv,count(DISTINCT user_id) as uv from data_collection
where pt='${pt}' and create_time>'${pt} 00:00:00';
同步資料到業務庫
選擇資料內建>建立資料內建節點>資料同步
任務排程
這邊任務排程不做詳細解釋,具體請點選前往
UDF,UDTF,UDAF
– 有時間補上
需要雲伺服器的不要錯過優惠
阿裡雲低價購買雲服務,值得一看