dataworks 简介
本文将为您介绍什么是DataWorks,以及DataWorks的功能、约束与限制。
DataWorks(数据工场,原大数据开发套件)是阿里云数加重要的PaaS平台产品,提供数据集成、数据开发、数据管理、数据治理、数据分享等全方位的产品服务,一站式开发管理的界面,帮助企业专注于数据价值的挖掘和探索。
DataWorks基于MaxCompute作为核心的计算、存储引擎,提供了海量数据的离线加工分析、数据挖掘的能力,详情请参见MaxCompute简介。
通过DataWorks,可对数据进行传输、转换、集成的操作,从不同的数据存储引入数据,对数据进行转化和开发,最后将数据输送到其他数据系统。
目录列表
我这里主要介绍一下业务流程的目录列表以及其作用
这里面主要关注数据集成、数据开发、表、资源、函数,至于算法和控制,目前我这块还没去研究。
-
数据集成
数据集成主要是用来做数据同步的,支持多种数据源,如 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
– 后期补
运维中心一些操作
– 后期补