
暂无个人介绍
暂时未有相关通用技术能力~
阿里云技能认证
详细说明实验背景介绍在进行本实验前,请先完成实验《数据采集:日志数据上传》、《数据加工:用户画像》、《数据治理:数据质量监控》。上述三个实验使用了DataWorks的三个模块,分别是数据集成模块(快速将数据上云),数据开发模块(完成数据的清洗和周期调度)和数据质量模块(配置数据的校验规则,保证数据产出质量)。本文将给大家讲述如何使用DataWorks的数据服务模块,快速完成数据共享,将整个数据研发流程达到闭环。 数据服务介绍 DataWorks数据服务旨在为企业搭建统一的数据服务总线,帮助企业统一管理对内对外的API服务。数据服务为您提供快速将数据表生成数据API的能力,同时支持您将现有的API快速注册到数据服务平台以统一管理和发布。 数据服务已与API网关(API Gateway)打通,支持将API服务一键发布至API网关。数据服务与API网关为您提供了安全稳定、低成本、易上手的数据开放共享服务。 数据服务采用Serverless架构,您只需关注API本身的查询逻辑,无需关心运行环境等基础设施,数据服务会为您准备好计算资源,并支持弹性扩展,零运维成本。 数据服务配置 在前三个课程中,我们已经产出了一系列的表,其中可以直接被报表系统使用的表有 rpt_user_info_d,可以被应用使用的明细表有 dw_user_info_all_d。本文我们会通过使用数据服务,快速的将这两个表生成API。 注册数据源 由于MaxCompute的特性是离线、批量大数据计算,所以直接连MaxCompute生成的数据服务API是无法快速响应的,那么MaxCompute计算引擎为了提升查询效率,推出了lightning加速引擎。那在数据服务中如何使用 lightning引擎呢? 在数据集成界面,新增数据,选择lightning 。 填写lightning引擎内容:数据源名称: (建议为)当前项目名数据源描述:日志数据表Lightning Endpoint:lightning.cn-shanghai.maxcompute.aliyun-inc.comPort:443MaxCompute项目名称:当前项目名AccessKey ID:访问者的AK信息AccessKey Secret:访问者的AK信息JDBC扩展参数:无需修改 以上信息,填写完成以后,点击测试连通性,测试连通性成功后,点击完成即可。 创建数据服务API 鼠标hover在右上角DataWorks的图标上,跳转至数据服务模块。 注:由于数据服务是结合API网关使用的,如果没有开通API网关的话,需要先开通API网关,具体开通流程本文不做详细概述。 鼠标选中API列表,右键选择新建分组。 输入分组名称。 创建完成分组后,鼠标右键单击分组名称,选择生成API,选择向导模式。 我们这里把 rpt_user_info_d 的数据快速生成api,故API的名称为 rpt_user_info_d ,路径与名称同名。 点击确认后,进入API的编辑界面,我们只需要简单的选择数据源类型、数据源名称、数据表名称即可,勾选上入参和出参,保存API。 注:这里建议大家勾选uid和分区字段dt为入参,出参可全选。 保存API完成后,点击右上角的测试,会弹出入参的填写框,入参中uid可以填写:0016359810821 ,dt可以填写昨天的日期。 测试通过后,可返回API编辑面板,点击右上角的发布,发布后的API就可以被正常访问了。可按照上述方法,将 dw_user_info_all_d 表也生成数据服务API。 API调用 生成的API如何调用呢?首先你需要将API发布,在发布之前要先开通API网关。 这个发布操作就会将数据服务生成的API发布到API网关。 在数据服务右上角,可以选择服务管理。在服务管理中,可以对已发布的API进行查看和授权操作。切换至服务管理后,可以在左侧的API调用模块下,看到API的调用信息。 然后通过API网关的SDK调用,详见这里。 关于数据服务API的更多用法,可以参考文档:《海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践》
问题描述 在保存节点的时候,遇到了如下报错 “有下游节点依赖本节点的输出 xxx,禁止删除 “该如何处理? 问题分析 这个问题很典型,是因为上游任务修改了本节点的输出,导致下游任务挂依赖的时候,可能会存在依赖丢失的风险,所以DataWorks校验的时候,阻止了本次修改的保存。 问题出现的场景给大家解析一下。 上游节点的代码如下: create table dw_demo (id BIGINT ,name STRING ); INSERT into TABLE dw_demo SELECT 1,'pengmin' from dual; 下游节点的代码如下: SELECT * from dw_demo ; 在DataWorks上调度运行的时候,很明显,下游节点依赖了上游节点输出的表数据,当我们把上游节点输出删除的时候,那么就会出现保存失败的情况。 问题解法 由于导致问题的原因是上游节点的输出被修改了,导致下游节点的依赖挂不上,那么要解决这个问题,只能修改下游节点的依赖关系,使其不依赖上游的输出表。 切记:删除输入以后,需要去自动解析哪里,重新解析一下输入输出。然后提交节点,再去保存上游。 当下游节点修改了依赖关系后,保存上游节点,显示保存成功,此问题就解决了。 小贴士 如何找到下游节点是解决这个问题的关键,有时候下游节点没有提交,我们无法直接找到下游节点,那么就需要使用一点小技巧。 提供一个思路:充分利用代码全局搜索功能,找到与这个表有关的任务,然后查看那些任务依赖了这个表。 根据查询出来的结果,找到具体引用的任务,选择删除输入,重新解析,保存提交即可。
DataWorks作为阿里云上广受欢迎的大数据开发调度服务,最近加入了对于Data Lake Analytics的支持,意味着所有Data Lake Analytics的客户可以获得任务开发、任务依赖关系管理、任务调度、任务运维等等全方位强大的能力,今天就给大家介绍一下如何使用DataWorks来调度DLA的脚本任务。 开通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服务之后,您还需要开通DataWorks的服务,目前DataWorks还在公测阶段,放心使用。 然后您可以在您对应的DLA服务群里面找我们任何一位同学开通一下DLA + DataWorks的试用资格(目前这个功能还处于邀请试用的阶段,没有完全放开)。 如果目前还没有专门DLA服务群的客户,可以通过工单联系我们。 DLA数据、库、表准备 为了演示如何在DataWorks上调度DLA的任务,我们后面会用到一些测试数据,这里我们用著名的TPCH的测试数据集, 数据保存在OSS上面。 通过MySQL命令行我们创建对应的库、表: 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/'; -- 结果表 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/'; -- 结果表 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/'; 任务调度其中一个重要的功能是任务之间的依赖,为了演示这个功能,我们这里会在DataWorks里面创建两个DLA任务, 我们的表、任务之间的关系如下图: 任务一: 我们从orders表清洗出已经完成的订单: o_orderstatus = 'F' , 并写入 finished_orders 表 任务二: 再从 finished_orders 表里面找出总价大于10000的订单: o_totalprice > 10000, 并写入 high_value_finished_orders 表。 关于如何使用DLA分析OSS数据更详细的信息可以参考: Data Lake Analytics + OSS数据文件格式处理大全: https://yq.aliyun.com/articles/623246 使用Data Lake Analytics + OSS分析CSV格式的TPC-H数据集: https://yq.aliyun.com/articles/623282 在 DataWorks 上创建 DLA 任务 在开通了 DataWorks + DLA 的功能后,我们可以在DataWorks的数据开发IDE里面创建DLA的任务了,如下图: 我们把第一个任务命名为: finished_orders , 点击确定会进入一个SQL编辑的页面,要写DLA SQL一定要告诉DataWorks我们写的SQL运行在哪个DLA的服务上,这个在DataWorks里面被包装成了"数据源"的概念: DataWorks的规范是任务的名称跟任务的输出表的名称保持一致。 刚进来的时候没有数据源,点击新建数据源: 填写必要的信息点击确定完成。 DataWorks为了安全的考虑,对可以连接的服务进行了安全控制,因此我们需要把我们要连的DLA的地址+端口加到白名单里面去,这个配置是在DataWorks工作空间的配置里面: 具体配置如下(需要换成你实际的IP+端口): 这里需要注意一下,工作空间配置只有工作空间管理员才有权限。 做了这么多之后,我们终于可以在编辑页面看到DLA的数据源了,下面我们在 finished_orders 的任务里面填入如下SQL, 并点击执行: use dataworks_demo; insert into finished_orders select O_ORDERKEY, O_TOTALPRICE from orders where O_ORDERSTATUS = 'F'; 如下图: 重复上述步骤,我们创建第二个任务: high_value_finished_orders: use dataworks_demo; insert into high_value_finished_orders select * from finished_orders where O_TOTALPRICE > 10000; 配置任务依赖 单个任务单次运行没什么太大意思,任务调度的核心在于多个任务按照指定的依赖关系在指定的时间进行运行,下面我们让: task_finished_orders 在每天半夜2点开始运行: high_value_finished_orders 在 finished_orders 成功运行之后再运行: 任务发布 任务配置好之后,就可以进行任务的发布、运维了。任务要发布首先必须提交: 提交之后,我们在任务发布界面的待发布列表可以看到所有待发布的任务: 选择我们刚刚提交的两个任务,我们就可以发布了: 在发布列表页面可以查看我们刚刚的发布是否成功: 发布成功之后,我们就可以进入任务运维页面查看我们的任务,进行各种运维操作了。 总结 在这篇文章里面,我带大家一起体验了一下如何用 DataWorks 来开发、调度DLA的任务,有了这个能力之后大家可以更方便地进行每天任务的开发、运维了。 本文转自:https://yq.aliyun.com/articles/690917
特别声明:本文介绍的场景是各种网络环境下的数据库该如何将数据上云(同步的目标端为MaxCompute),若同步的目标端为其他数据源,本文也可参考,底层执行原理基本一致。 网络背景(全局通用) 在讲网络问题的解决方案之前,先给大家讲讲阿里云上的网络背景。 同一region下,经典网络环境中的机器与经典网络环境中的机器,内网是可以互通的。 同一region下,VPC网络环境中的机器与VPC网络环境中的机器,内网是可以互通的 同一region下,经典网络环境中的机器和VPC网络环境中的机器,不保证内网可通。 不同region下,经典网络环境中的机器与经典网络环境中的机器,不保证内网可通。 不同region下,VPC网络环境中的机器与VPC网络环境中的机器,不保证内网可通。 不同region下,经典网络环境中的机器和VPC网络环境中的机器,不保证内网可通。 阿里云上的ECS和本地IDC机房中的机器,默认内网不通,只能走公网。 介绍完整体的网络背景,总结了一句话: 只有同一region下,同一网络环境中的机器,内网才能互通,如果开启了安全组或白名单,请自行添加。 场景描述 - 数据源测试连通性失败 最近很多用户都会问我,你好,我的数据源测试连通性的时候失败了,该如何处理呢?结合上面介绍的网络背景,我们需要有一个灵魂三问(请): 该数据源是云数据库还是自建的数据库 ? 注:云数据库类似rds,是阿里云上已经搭建好的数据库服务,用户可直接使用。自建的数据库是指,本地IDC机房中自建搭建的数据库,或者是在阿里云上通过ECS自己搭建的数据库。 数据库所在的Region和DataWorks项目所在Region是否相同? 数据库的网络环境是什么? 云数据库 由于RDS数据库在网络方面做得比较好,即使是RDS数据库所在的region 和DataWorks 项目不在同一 region下,且数据库网络也是VPC环境下,测试连通性也是可以连通的(因为RDS做了 VPC反向代理)。除RDS数据库外,其他云数据库都可通过以下问题来判断,通过什么方式同步数据比较好,以下两问需严格注意。 第一问:数据库所在的Region和DataWorks项目所在Region是否相同? 当数据库所在region和DataWorks项目在同一region下时,那么就需要看下一个问题,数据库的网络环境了。 当数据库所在region和DataWorks项目不在同一region下时 ,大概率下内网是无法互通的,此时请考虑使用公网,如果不想用公网的话,可以使用自定义资源组。 注:数据集成添加自定义资源组的操作流程:https://help.aliyun.com/document_detail/72979.html特别注意:在添加自定义资源组中机器时,需保证,该机器与您的数据库内网可达,判断规则可借鉴第一节网络背景。 第二问:数据库的网络环境是什么? 当云数据库网络环境是经典网络时,由于DataWorks底层任务运行的机器,是部署在经典网络环境下的,所以同一region下,经典网络的机器与经典网络的机器网络是可以互通的,如果测试连通性失败,那么可以考虑一下,是不是白名单没有加全;或者用户名、密码等连接方式是否书写正确。 当云数据库网络环境是VPC网络时,大概率下内网是无法互通的,此时可以通过添加自定义资源组的方式,来解决网络问题。 DataWorks数据集成白名单地址:https://help.aliyun.com/document_detail/72977.html 数据集成添加自定义资源组的操作流程:https://help.aliyun.com/document_detail/72979.html特别注意:在添加自定义资源组中机器时,需保证,该机器与您的数据库内网可达,判断规则可借鉴第一节网络背景。 ECS上的自建数据库 ECS上自建数据库和云数据库的情况基本一致,建议DataWorks的项目和自建数据库的ECS在同一region下。如果DataWorks项目和自建数据库的ECS不在同一region下时,又不想使用公网进行数据传输,可以考虑使用数据集成的自定义资源组来运行任务。 注:数据集成添加自定义资源组的操作流程:https://help.aliyun.com/document_detail/72979.html 特别注意:在添加自定义资源组中机器时,需保证,该机器与您的数据库内网可达,判断规则可借鉴第一节网络背景。 本地IDC机房中的自建数据库 当本地IDC机房中的自建数据库需要上云的话,可以优先选择通过公网传递数据。若不想将本地IDC机房中的机器开启公网访问的话,可以使用DataWorks上的自定义资源组来完成数据传输;或者通过专线打通网络。 注:数据集成添加自定义资源组的操作流程:https://help.aliyun.com/document_detail/72979.html 特别注意,当测试连通性失败,准备使用自定义资源组来运行任务时。您需要确认您注册数据源输入的数据库连接地址、数据库名、用户名、密码等信息输入是正确的,确认后选择完成即可。 场景描述 - 配置数据同步任务 结合上文,当数据源添加成功后,如何完成接下来的同步任务配置。主要分为两个部分,数据源测试连通性成功,或数据源测试连通性失败时该如何处理。 测试连通性成功的同步任务配置 当测试连通性成功的时候,表示DataWorks任务的默认执行集群与您要同步的数据库之间的网络是可达的,那么您只需要通过正常任务配置即可。任务配置文档可参考:向导模式同步任务配置。 测试连通性失败的同步任务配置 当测试连通性失败时,表示DataWorks任务的默认执行集群与您要同步的数据库之间的网络是不可达的。那么意味着,您无法使用向导模式来配置同步任务(无法获取到数据库中表的元数据信息),只能通过脚本模式来配置同步任务(因为数据源中表的元数据信息可以手填),详情请参考:脚本模式同步任务配置。 切记:脚本模式同步任务配置完成以后,需要在右上角的任务运行资源组中,指定同步任务运行所在的资源组。 总结 当您的数据库与DataWorks任务的默认执行集群不通时(测试连通性失败),配置同步任务需注意以下几点: 添加数据集成自定义资源组 使用脚本模式配置同步任务 修改同步任务运行的资源组 特别注意:在添加自定义资源组中机器时,需保证,该机器与您的数据库内网可达,判断规则可借鉴第一节网络背景。。 如果参考上述方法,还是没法解决问题,那么建议工单咨询。若对本文有无法理解的地方,可加入DataWorks用户交流群给我们反馈,感谢您的支持。DataWorks数加交流0群(群号:11718465)。 也可以钉钉扫码加群:
分支节点登场 在日常Dataworks的使用过程中,经常会有同学遇到如下的问题:我有一个节点,需要每个月的最后一天执行,应该如何设置? 这种情况我们一般的回复是:由于cron表达式无法表达这种场景,所以暂时无法支持。 但是,现在我们有了分支节点,它让我们可以套用switch-case的编程模型来搞定这个问题。下面有请分支节点和他的小兄弟们粉墨登场!!! 分支节点的兄弟们 现在打开“数据开发”页面,可以看到“控制节点”一栏多了几个新面孔,先来一张合影: 他们分别是: 能把自己的结果传给下游的赋值节点 —— 赋值节点复用了节点上下文依赖的特性,在已有常量/变量两种上下文的基础上,赋值节点自带一种自定义的上下文输出。Dataworks会捕获赋值节点的select结果或者打印结果,把这个结果以outputs作为上下文输出参数的值供下游节点引用。 能决定哪些下游正常执行的分支节点 —— 分支节点复用了Dataworks上挂依赖的输入输出的特性,对于普通节点,节点的输出仅仅是一个全局唯一的字符串。当下游需要挂依赖时,搜索这个全局唯一的字符串作为节点的输入就能挂到下游节点列表中。但是对于分支节点,我们可以给每个输出关联一个条件,当下游挂依赖时可以选择性的把某一个条件关联的输出作为当前节点的输出。这样达到的效果时,在成为分支节点下游的同时,也关联到了分支节点的条件上:即满足了这个条件,这个输出对应的下游才会被正常执行;其他为满足条件的输出对应的下游会被置为空跑。 无论上游是否正常执行本身都会正常调度的归并节点 —— 对于未被分支节点选中的分支,Dataworks会把这个分支链路上所有的节点实例均置为空跑实例,也就是说一旦某个实例的上游有一个实例是空跑的话,它本身也会变为空跑。我们添加了归并节点来阻止这个空跑的属性无限制的传递下去,对于归并节点实例,无论它的上游有多少个空跑的实例它都会直接成功并且不会再把下游置为空跑。 下面这张图可以示意在有分支节点的情况下,依赖树会变成什么样 ASN:一个赋值节点,它可以对比较复杂的情况做计算,为分支节点条件选择做准备 X/Y:分支节点,他们挂在赋值节点ASN下面,根据赋值节点的输出做分支的选择。如图,X 节点选择了左边的分支、Y节点选择了左边两个分支 A/C节点由于挂在了X/Y节点被选择的输出下面,因此正常执行 B节点虽然挂在了Y节点被选择的分支下面,但由于X节点未选择这个输出,因此B节点被置为空跑 E节点由于未被Y节点选中,因此即使有一个普通的Z节点上游,也同样被置为了空跑 G节点由于上游E节点空跑,因此即使C/F都正常执行,E节点同样把空跑 至于空跑属性什么情况下才能不再向下传递呢?看JOIN节点,这是一个归并节点,它的特殊功能就是停止空跑属性的传递,可以看到由于D节点挂在了JOIN节点下面,因此B节点的空跑属性被阻断了,D开始正常跑了 好了分支节点的兄弟们已经介绍完毕,接下来看他们通力合作,解决某个节点只有每个月最后一天跑场景。 分支节点使用 首先定义一组任务依赖: 根节点赋值节点来通过定时时间SKYNET_CYCTIME来计算当前是不是本月的最后一天,如果是则输出1,不是则输出0。这个输出会被Dataworks捕获,传递给下游。 分支节点通过赋值节点的输出来定义分支 两个shell节点挂在分支节点下面,分别执行不同的分支逻辑 定义赋值节点 赋值节点新建时会自带一个outputs,赋值节点的代码支持SQL/SHELL/PYTHON三种 对于SQL类型,Dataworks捕获最后一条SELECT的SQL作为outputs的值 对于SHELL/PYTHON类型,Dataworks捕获最后一行标准输出作为outputs的值 这里采用PYTHON类型作为赋值节点的代码,调度属性和代码如下: 代码 调度属性 定义分支 分支节点可以用简单的PYTHON语法的表达式定义条件,每个条件会绑定一个输出,意味着当满足这个条件时改输出下的下游节点会被执行起来,而其他的会被置为空跑。 调度配置 分支配置 再来看一遍调度配置 挂在不同分支下面 最后,给真正执行任务的节点挂依赖的地方也要注意,可以看到分支节点已经有三个输出了,按照以往挂依赖的逻辑,把这三个输出中的任意一个当做输入即可;但是由于现在分支节点的输出关联了条件,所以要慎重选择。 每月最后一天执行的节点依赖 每月其他时间执行的节点依赖 Show Time 现在到了见证奇迹的时刻,发布之后,我们执行一下补数据,业务日期选择2018-12-30和2018-12-31,也就是定时时间分别为2018-12-31和2019-01-01,这样第一批补数据应该是会触发“最后一天”的逻辑,第二批触发“非最后一天”的逻辑,我们看看两者的区别。 业务日期2018-12-30(定时时间2018-12-31) 分支节点分支选择结果 节点“最后一天执行”正常执行 节点“除了最后一天之外运行”被置为空跑 业务日期2018-12-31(定时时间2019-01-01) 分支节点分支选择结果 节点“最后一天执行”被置为空跑 节点“除了最后一天之外运行”正常执行 总结 好了,基于分支节点,我们已经实现了“每个月最后一天”执行的这一目标,当然这只是分支节点最简单的使用方法。基于赋值+分支,可以组合出各种各样的条件满足业务上的需求,期待大家一起发掘分支节点的能力。 最后,再回顾一下分支节点相关的要点: Dataworks捕获赋值节点的最后一条SELECT语句或者最后一行标准输出流作为赋值节点的输出供下游引用 分支节点的每一个输出都被关联了条件,下游挂分支节点作为上游,需要了解每个输出关联的条件的意义再选择 未被选中的分支会被置为空跑并且空跑属性会一直向下传递,直到遇到归并节点 归并节点除了阻断空跑属性外,还会有更多的超能力,一起期待吧!
每一个账号在DataWorks上都会分配到一批调度资源,但由于DataWorks产品本身还在公测中,没法做到无限制的对大家开放调度资源,那么调度资源不足的话,可以尝试如下方法。 将任务错开时间段运行 在进行数据开发时,经常会遇到离线调度,凌晨的1-3点也是离线任务的运行高峰,那么在任务运行的高峰期,DataWorks上的调度资源也是很紧张的,大家如果不想出现任务堆积、等待的情况,可以将不重要的任务的起调时间设置的晚一点,让任务的运行时间错开集群任务运行的高峰期。 如何精准判断调度资源情况 任务并发执行数已达上限,正在等待在云端的gateway资源 在DataWorks 中运行的任务如果遇到了任务并发执行数已达上限,正在等待在云端的gateway资源... 等报错信息,可以带上项目名,项目所属region,节点id等信息,工单反馈给我们。 同步任务一直在wait.... 若同步任务一直在wait,那么需要看看任务运行的所在资源组(具体的识别方法,可参考下一节内容),是在自定义资源组上还是在默认资源组上,若在默认资源组上的话,可能是同步任务的运行资源不足导致的,这时候可以在数据集成界面,新增资源组。新增资源组的操作可参考《新增调度资源》文档。新增完资源组后,可以选择将任务运行在自定义资源组上。 注:DMU的配置,一般不要超过5,可根据任务需要传输的数据量大小,将DMU设置为1-5之间即可。 如何识别同步任务运行所属的资源组 同步任务运行所在的资源组需要通过任务运行的日志进行识别,大家可以参考这篇文档《同步任务日志排查》中,任务是从哪里开始的 部分。 job queueing 若SQL任务中运行时,出现了job queueing的日志,可带上日志中的logview,工单反馈。job queueing一般是MaxCompute的计算资源不足导致的,通常情况下,可以去购买CU资源,来保障任务的运行资源。 期望这篇文章能让您了解如何有效的解决资源不足的情况,我是彭敏,更多与DataWorks有关的内容,可以加入我们的钉钉群:DataWorks数加交流0群(群号:11718465)。也可以钉钉扫码加群:
在DataWorks上新建一个Python资源,命名为 test_udf.py 编辑pyudf的脚本代码,实现方法请参考Python实现MaxCompute UDF # -*- coding:utf-8 -*- from odps.udf import annotate #函数签名,SQL执行前所有函数的参数类型和返回值类型必须确定; @annotate("string->string")#参数为string,返回值为string; class Upper2Lower(object): def evaluate(self, arg):#实现 evaluate 方法; return arg.lower() 保存,并上传资源。 新建函数 Upper2lower2 注册函数 python资源输入类名的时候,不需要加上py后缀。切记,不要忘记提交函数。 使用函数 SELECT Upper2lower2('AA'); 至此为止,pyudf就可以使用了。 关于DataWorks V2.0版本还有啥使用上的疑惑,就加入我们的钉钉群吧,有专业的技术支持同学接客。 DataWorks数加交流0群群号:11718465 也可以扫码加群:
DataWorks 新版本在配置任务依赖的时候,是根据本节点输出名称作为关联项来给任务间设置依赖关系的,那我们应该如何配置任务的输入输出呢。 如何配置任务的本节点输入 本节点输入有两种配法,一种是使用代码自动解析功能,解析出任务的依赖;另一种是手动输入任务依赖(手动输入父节点的本节点输出名称)。敲黑板:手动输入上游节点时,输入的是父节点本节点输出名称,如果父节点任务名称和父节点的本节点输出名称不一致的话,一定不要输错了。 在配置上游节点的时候,经常会遇到一个问题:通过自动解析出来的上游节点,是一个无效的上游依赖。那如何识别一个依赖是否有效呢,可以查看解析出来的上游依赖,在父节点ID这一列是否有值。 任务依赖的配置,实质上是给两个节点设置节点间的依赖关系,只有真实存在的节点,才能够设置上有效的依赖关系,任务依赖才能设置成功。 无效的上游依赖 那遇到无效的上游依赖时,应该如何处理呢。 Case 1: Case 2:这个时候很明显了,解析出来的父节点输出名称是不存在的,那有可能project_b_name.pm_table_b这个表,是没有产出任务的,或者这个表产出任务的本节点输出配置的不对,导致无法解析出来。 那解决方案有两个: 确认这个表是否有产出任务 确认这个表产出任务的本节点输出名称是什么,将这个本节点输出名称手动输入到依赖的上游节点中。 敲黑板:手动输入上游节点时,输入的是父节点本节点输出名称,如果父节点任务名称和父节点的本节点输出名称不一致的话,一定不要输错了。举个例子吧:有一个上游节点A,A的本节点输出名称是A1;有一个下游节点B需要依赖A,这个时候应该在依赖上游节点的输入框中,输入A1,并点击右侧的加号进行添加。 同步任务如何配置上游依赖 我的表是从源库抽取过来的,没有上游了,你告诉我咋办吧。 那就点一下使用项目根节点吧。 如何配置任务的本节点输出 配置本节点输入好麻烦,有一点点不太想写代码,有啥好方法没。 下面给大家讲解一下,在阿里内部是如何高效配置本节点输出的。 懒人法:本节点名称、本节点输出名称、本节点输出表名,三名合一,一招鲜,吃遍天。 这个三名合一有几个好处: 能够快速的知道这个任务操作的是哪个表 能够快速知道这个任务失败后造成的影响范围有多大 使用自动解析配置任务依赖时,只要本节点输出符合三名合一的规则,自动解析的精准性能得到大大的提升 自动解析 自动解析:通过代码自动解析调度依赖关系。底层实现原理:代码中只能拿到表名,如何根据表名解析出对应的产出任务,如果表名和任务名一样该有多好找啊。 如odps sql类型节点代码如下: INSERT OVERWRITE TABLE pm_table_a SELECT * FROM project_b_name.pm_table_b ; 解析出来的依赖关系如下: 系统会判断这个节点应该是要依赖project_b_name产出 pm_table_b 的节点,同时本节点最终产出 pm_table_a ,因此解析父节点输出名称为 project_b_name.pm_table_b,本节点的输出名称为本project_name.pm_table_a。(本项目名称为test_pm_01) 如果不想用从代码解析到的依赖,那么就选择”否”。 如果代码里有很多表是临时表如t_开头的表为临时表,那么这个表是不会被解析为调度依赖。临时表的定义可以通过项目配置来定义以什么开头的表名为临时表。 如果代码里一个表名即是产出表又是被引用表(被依赖表)则解析时只解析为产出表。 如果代码里一个表名被多次引用或者被多次产出,那么解析时只解析一个调度依赖关系。 注意:默认情况下,表名为t 开头的会被当成临时表,自动解析不解析临时表。如果t开头不是临时表,请联系自己的项目管理员到项目配置中进行修改,修改地址为项目配置。 如何删除某表的输入输出 自在进行数据开发的时候,经常会使用到静态表(数据通过本地文件上传到表中),这部分静态数据其实是没有产出任务的,这时候在配置依赖的时候,就需要将静态表给删除输入,若静态表的表名又不满足t开头,不会被当成临时表,那么应该如何处理呢。实际上就是:自动依赖解析出了一堆不需要的依赖,怎么干掉它们... 这种情况,可以在代码中选中表名,点击删除输入。 另外再给一个小贴士:大家使用DataWorks 2.0版本的时候,大部分都是从1.0版本迁移过来的,我们会将迁移过来的DataWorks任务的本节点输出默认置为项目名.节点名。在挂迁移任务的依赖时,也可以使用节点名来挂任务依赖。 一定要看 当任务依赖配置完成以后,提交的窗口会有一个选项,当输入输出和代码血缘分析不匹配时,我确认继续执行提交操作。 这个大前提是:我确认依赖关系是正确的,如果不能确认的时候,再按照上面的方法来确认一下依赖关系吧。 关于DataWorks V2.0版本还有啥使用上的疑惑,就加入我们的钉钉群吧,有专业的技术支持同学接客,欢迎钉钉扫码进群,二维码如下:
在进行数据开发中,有很多时候需要使用shell 来调用其他语言。但是在DataWorks上,底层的机器运行任务时都会有沙箱限制,沙箱会限制网络访问和禁止本地IO读写等等,会带来诸多不便。那么我们如何将这部分任务运行在非沙箱环境(自己的机器上)呢。 我们可以将任务的运行环境预先在某台机器上准备好,然后将任务指定在这台机器上运行。 注:目前只有华东2支持将shell任务运行在自定义资源组上。 新增自定义资源组,这部分可以直接查看DataWorks的官网文档新增资源组,本文不多做赘述。 准备任务运行环境,用户自行准备。 编写任务代码。 将任务指定在新增的资源组上运行。
在ODPS SQL 中使用调度参数 DataWorks的调度参数分为两种,一种是系统调度参数,另一种是自定义调度参数。 系统调度参数只有两个:bizdate:获取到业务日期,展示格式为:yyyymmdd;cyctime:获取到任务实例的定时时间,格式为:yyyymmddhh24miss; 在SQL节点中使用系统调度参数 以下是在SQL代码中的用法,并设置该任务的定时运行时间为00:23分。 请注意:当代码中使用了调度参数,在界面上直接运行的时候,需要传入一个具体的值,因为直接运行不会经过调度系统,所以参数不会转换,需要输入一个具体的值,该值仅本次运行有效。 当任务提交后,点击冒烟测试运行,选择传入的业务日期时间,点击确认。 运行结果如下:可以看到,时间都已经被替换了,bizdate获取到了我们传入的业务日期,cyctime获取到了任务的定时时间。 在SQL中使用自定义调度参数 DataWorks 除了支持系统默认调度参数外,还支持自定义调度参数,可以对时间的展示格式进行选择,而且可以在时间数值上进行相加减。 使用自定义调度参数的方法还是一样,先在代码中声明变量,然后给变量赋值。 运行结果如下: 特别注意:花括号和中括号的用途 若对时间表达式的格式有要求,可自行修改,比如:$[yyyy-mm-dd],注意,如果是DATETIME格式,请拆开成两个变量组合一下,中间用空格隔开。 在给参数赋值时,$[] 中写时间表达式即可。 获取+/-周期的方法: 后N年:$[yyyy+N] 前N年:$[yyyy-N] 后N月:$[yyyymm+N] 前N月:$[yyyymm-N] 后N周:$[yyyymmdd+7*N] 前N周:$[yyyymmdd-7*N] 后N天:$[yyyymmdd+N] 前N天:$[yyyymmdd-N] 后N小时:$[yyyymmddhh24miss+N/24] 前N小时:$[yyyymmddhh24miss-N/24] 后N分钟:$[yyyymmddhh24miss+N/60/24] 前N分钟:$[yyyymmddhh24miss-N/60/24] 关于在SQL中使用调度参数,还有任何疑问,可以加入DataWorks的钉钉群,群号如下:DataWorks数加交流0群(群号:11718465)
DataWorks的整库迁移的介绍本文不再细述,想了解的同学可以参考一下这个文档 整库迁移概览。下面主要给大家介绍一下如何使用整库迁移的时候,给目标表名加上前缀。 如何使用DataWorks的整库迁移给目标表名加上前缀 在数据源中点击mysql数据源的整库迁移,进入整库迁移任务配置界面。 在点击高级配置,然后在表名转换规则这里输入通配符,注意格式,以及转换的后的规则,$1会自动替换成匹配上的字符串,点击确认。 选择一张表名,点击提交任务。 点击查看任务。 可以见到,同步任务已经快速生成,并且目标表也已经加上了ods_XXX 的表前缀。 有其他DataWorks的相关使用问题,可以加入DataWorks的交流群,AT 彭敏 & 龚汉仆获取技术支持。
在DataWorks上每一个节点在编辑时,都会有一个状态显示。如图,此处显示的状态是我正在编辑节点,因此这个节点被锁定了。 如果其他人需要编辑这个节点,会有一个解锁的步骤。此处是使用了另一个账号查看同一个任务,提示当前任务只读,如果要编辑的话,会导致当前编辑人的代码无法保存的情况,请自行沟通。 版本控制 DataWorks上的SQL节点和Shell节点,每次提交都会记录版本信息,可进行历史版本的比对。版本记录中只会记录已提交的内容,没有提交的部分无法记录。
信息摘要: DataWorks数据开发模式大改版,智能大数据开发模式,让你的开发效率一升再升。适用客户: 全体数据开发者版本/规格功能: DataWorks数据开发模块大改版,推出解决方案、业务流程的概念,将同一个业务下的节点都聚集在一起;新增运行日志功能,可以查看三天内页面上直接运行的SQL任务日志;支持代码全局搜索;支持可视化流程图编辑,极大提高开发效率。推出组件概念,将相同的SQL逻辑写成模板,提升代码复用性;产品文档: https://help.aliyun.com/document_detail/74423.html?spm=a2c4g.11174283.6.601.4NPJtD
信息摘要: 智能监控可以反推上游,确保任务的最终完成时间,可满足更多监控场景。适用客户: 全体对任务监控有要求的开发者版本/规格功能: 1、 基线管理功能:通过简单配置保障任务组,自动划定监控范围与阈值,简化用户操作 2、 事件管理功能:重点关注影响基线产出的任务,智能评估任务实例运行状态(目前开放变慢、出错两种状态),生成事件并触发报警 3、自定义规则功能:原有任务节点监控的升级版,增加了超时告警功能,应对更多监控场景产品文档: https://help.aliyun.com/document_detail/73967.html?spm=a2c4g.11174283.6.670.TcYHhC
DataWorks(数据工场)是阿里云推出的大数据领域PaaS平台,是一站式的DW能力平台,提供数据集成、数据开发、数据管理、数据质量、数据服务、数据保护伞等全方位的产品服务。 全新的数据开发界面 DataStudio 数据开发(DataStudio)是DataWorks上被使用最多的界面,本次升级我们给数据开发界面做了一系列的改造,并将数据开发改名为DataStudio。DataStudio上拥有强大的SQL编辑器,SQL解析器;不仅让你SQL写的爽,还让你SQL读的爽,极大的提升SQL代码编写及阅读效率。DataStudio还推出了组件功能,支持将通用的代码逻辑封装成为组件,封装后的组件可直接在SQL节点中调用,只需要简单的配置输入输出即可,提升了SQL代码的可复用性。DataStudio还推出了业务流程的概念,业务流程可以将完成同业务的节点封装在一起,并通过拖拽来设置任务间的依赖,提升任务配置和管理的效率。除此之外还发布了一系列的开发辅助功能,只为提升数据开发效率。 SQL编辑器 为了SQL写的更爽,我们升级了SQL编辑器的功能。优化了SQL关键词提示,可快速编辑代码;新增在编辑SQL时能实时获取操作表的元数据,在编写过程中会自动提示表的列名,且将鼠标放在表名上,会显示表的元数据信息;编辑器支持SQL语法检测,能快速定位代码中的语法错误,提升SQL的准确性。升级后的SQL编辑器极大的提升了数据开发效率。我们除了在编辑代码上做了优化外,针对长SQL还进行了结构拆分,解决了长SQL 阅读难的问题。DataWorks支持功能自定义配置,用户可根据开发习惯,自行配置编辑器的代码字体大小,关键字大小写等信息。 业务流程 除了编辑器上的优化以外,我们还推出了解决方案和业务流程的概念。业务流程是对业务的抽象实体,以赋能用户能够以业务的视角来组织数据代码开发。业务流程可以被多个解决方案复用,用户可自定义组合一些业务流程为一个解决方案。 在业务流程中,我们支持了全局参数,增加了参数的可复用性,解决同一个参数在多个任务中复用的问题。业务流程有入下几个优点: 帮助用户从业务视角组织代码,更清晰。提供基于任务类型的代码组织方式。支持多级子目录(建议不超过四级)。 可从业务视角查看整体的工作流,并进行优化 提供业务流程看板,开发更高效 可按照业务流程组织发布、运维。 除此之外,DataWorks还推出了手动业务流程,支持灵活配置全局参数,可每次运行时灵活传参。未来将会提供手动业务流程的调度API,可通过API触发任务,与你的系统紧密结合。 组件 在实际业务实践中,有大量的SQL代码过程很类似,过程中输入的表和输出的表的结构是一样的或者是类型兼容的,仅仅是名字不同而已。这个时候组件的开发者就可以将这样的一个 SQL 过程抽象成为一个SQL组件节点,将里面可变的输入表抽象成输入参数,把里面可变的输出表抽象成输出参数,就可以实现 SQL 代码的复用。组件的使用者在使用 SQL 组件节点的时候,只要从组件列表中选择和自己业务处理过程类似的组件,为这些组件配置上自己业务中特定的 输入表和输出表,不用再重复复制代码,就可以直接生成新的组件 SQL 节点 从而极大提高了开发效率,避免了重复开发。SQL 组件节点生成后的发布,调度的操作方法都和普通的 SQL 节点的操作方式是一样的。 强大的辅助开发功能 DataWorks新增了代码搜索功能,再也不用担心任务过多的情况下,找不到操作某表的节点代码了。DataWorks新增了运行日志功能,可保留近三天内,SQL节点在界面上运行的日志及结果。减少代码重复运行率,再也不怕随意关闭查询结果页了。DataWorks新增了回收站功能,节点下线以后,会自动转移至回收站中,一键恢复代码不是梦。 智能监控 智能监控(Intelligent Monitor,内部代号Mosad)是在DataWorks原有运维中心基础上做的一次升级改进。 在智能监控中,引入了新的概念——基线。通过基线,技术专家可以不再理会错综复杂的数据处理中间过程,只需指定真正决定业务的最终步骤,并设定期望完成的时间,之后的一切都交由智能算法来搞定。 通过基线,技术专家可以足够宏观,对任务链路进行全局把握。根据设定的期望完成时间,算法会自动推断过程中每一步任务的预警时刻。一旦有任务逾越界限,随即触发告警,帮助用户将故障消灭在萌芽时刻。 通过基线,技术专家也可以足够微观,对每一个任务状态进行全方位分析。根据任务的历史运行状态,算法会自动确定获得结果的关键路径。关键路径上的任务节点,将被严密监视,任何的异动——包括出错,甚至是运行变慢,都将直接出发告警,帮助用户将故障消灭在细微之处。 除了全新的基线,原有的监控规则也得到了加强。新的超时规则,基于相对时间进行判定,使监控规则更加灵活。免打扰时段、最小报警间隔等体贴功能,将会最大程度的保护技术专家的心智资源。 双模式开发 本次版本升级,DataWorks还完善了之前推出的双项目开发模式。在DataWorks的新版本中,支持双模式开发,即创建项目时,要求选择项目模式是简单模式还是标准模式,标准模式是一个项目两个环境(开发+生产)。升级后的标准模式和原始的双项目开发模式相比,多了规则的约束,以保证规范的数据开发。以下给大家讲解一下标准模式的特点: 所有任务的编辑,只能在开发环境中进行。生产环境的的代码无法直接修改,减少了生产环境代码的修改入口,尽可能的保证了生产环境代码的稳定。 开发环境默认不开启任务调度,避免开发环境每日运行会和生产环境项目抢夺运行资源,更好的保障了生产环境任务运行的稳定性。 生产环境运行会有一个默认的生产账号,生产账号产出的所有表都属于主账号,开发过程中查询生产表都需要单独申请,更好的做到了表权限的控制。 任务开发完毕后,要发布上生产都必须经历一个打包发布的过程(开发角色只允许编辑代码,发布操作需要运维角色或项目管理员来操作,相当于增加了一个代码二次审核的过程),完善了数据开发的规范,更好的保证生产环境代码的准确性。 以上是本次三合一发布新版本的大部分内容,鉴于本次新版本功能改动较大,老用户需要等待数据迁移成功后,才可使用。在2018年07月13日后加入阿里云的用户,可直接使用新版。老用户可通过注册一个新的阿里云账号来试用DataWorks V2.0的新功能。大家有任何问题可在本文下发留言,或加入钉钉群AT彭敏、向翠、李珍珍三位同学寻求帮助。
信息摘要: 数据质量新增2种实时数据源校验规则,离线校验新增9个规则模板适用客户: 数据开发者版本/规格功能: 数据质量新增实时数据源(datahub)校验;新增9个离线模板规则的校验;增加数据质量与调度系统关联方式,提升与调度关联的灵活性;数据质量离线数据源新增DataWorks项目自动同步;修复数据质量告警邮件及短信无法收到的bug。产品文档: https://help.aliyun.com/document_detail/66868.html?spm=a2c4g.11174283.6.682.nhtUjv
实验涉及大数据产品 大数据计算服务 MaxCompute 大数据开发套件 DataWorks 实验环境准备 必备条件: 开通大数据计算服务MaxCompute 创建大数据开发套件项目空间 进入大数据开发套件,创建DataWorks项目空间 确保阿里云账号处于登录状态。 step1:点击进入大数据(数加)管理控制台>大数据开发套件tab页面下。 step2:点击右上角创建项目或者直接在项目列表-->创建项目,跳出创建项目对话框。 选择相应的服务器时如果没有购买是选择不了会提示您去开通购买。数据开发、运维中心、数据管理默认是被选择中。 step3:勾选相应的服务单击 确认,跳转到下面的界面,填写相应的信息单击确认,创建项目完成。 项目名需要字母或下划线开头,只能包含字母下划线和数字。【注意】项目名称全局唯一,建议大家采用自己容易区分的名称来作为本次workshop的项目空间名称。 step4:单击进入项目跳转到下面的界面: 数据质量 数据质量(DQC),是支持多种异构数据源的质量校验、通知、管理服务的一站式平台。数据质量以数据集(DataSet)为监控对象,目前支持MaxCompute数据表和DataHub实时数据流的监控,当离线MaxCompute数据发生变化时,数据质量会对数据进行校验,并阻塞生产链路,以避免问题数据污染扩散。同时,数据质量提供了历史校验结果的管理,以便您对数据质量分析和定级。在流式数据场景下,数据质量能够基于Datahub数据通道进行断流监控,第一时间告警给订阅用户,并且支持橙色、红色告警等级,以及告警频次设置,以最大限度的减少冗余报警。 数据质量的使用流程是,针对已有的表进行监控规则配置,配置完规则后可以进行试跑,验证此规则是否试用。当试跑成功后,可将此规则和调度任务进行关联。关联成功后,每次调度任务代码运行完毕,都会触发数据质量的校验规则,以提升任务准确性。在关联调度后,可根据业务情况,对重要的表进行订阅。订阅成功后,此表的数据质量一旦出问题,都会有邮件或者报警进行通知。 注:数据质量会产生额外的计算费用,在使用时请注意。 新增表规则配置 若已完成《日志数据上传》、《用户画像》实验,我们会得到表:ods_raw_log_d、ods_user_info_d、ods_log_info_d、dw_user_info_all_d、rpt_user_info_d。 数据质量最重要的就是表规则的配置,那么如何配置表规则才是合理的呢?我们来看一下上面这几张表应该如何配置表规则。 ods_raw_log_d 在数据质量中可以看到该项目下的所有表信息,现在我们来给 ods_raw_log_d 表进行数据质量的监控规则配置。 选择ods_raw_log_d表,点击配置监控规则,将会进入如下页面。 我们可以回顾一下 ods_raw_log_d 这张表的数据来源,ods_raw_log_d 这张表的数据是从ftp中获取到的日志数据,其分区是以${bdp.system.bizdate}格式写入进表中("dbp.system.bizdate" 是获取到前一天的日期)。 对于这种每日的日志数据,我们可以配置一下表的分区表达式,分区表达式有如下几种,我们选择 dt=$[yyyymmdd-1] 这种表达式,有关调度表达式的详细解读,请参考文档调度参数。 注:若表中无分区列,可以配置无分区,请根据真实的分区值,来配置对应的分区表达式。 确认以后,可以见到如下界面,我们可以选择创建规则。 选择创建规则后,出现如下界面: 点击添加监控规则,会出现一个提示窗,来配置规则。 这张表里的数据来源于FTP上传的日志文件,作为源头表,我们需要尽早判断此表分区中是否有数据。如果这张表中没有数据,那么就需要阻止后面的任务运行,因为来源表没有数据,后面的任务运行是没有意义的。 注:只有强规则下红色报警会导致任务阻塞,阻塞会将任务的实例状态置为失败。 我们在配置规则的时候,选择模板类型为表行数,将规则的强度设置为强,比较方式设置为期望值不等于0,设置完毕后点击批量保存按钮即可。 此配置主要是为了避免分区中没有数据,导致下游任务的数据来源为空的问题。 规则试跑 右上角有一个节点试跑的按钮,可以在规则配置完毕后,进行规则校验,试跑按钮可立即触发数据质量的校验规则。 点击试跑按钮后,会提示一个弹窗,确认试跑日期。点击试跑后,下方会有一个提示信息,点击提示信息,可跳转至试跑结果中。 可根据试跑结果,来确认此次任务产出的数据是否符合预期。建议每个表规则配置完毕后,都进行一次试跑操作,以验证表规则的适用性。 在规则配置完毕,且试跑又都成功的情况下。我们需要将表和其产出任务进行关联,这样每次表的产出任务运行完毕后,都会触发数据质量规则的校验,以保证数据的准确性。 关联调度 数据质量支持任务关联调度,在表规则和调度任务绑定后,每次任务运行完毕,都会触发数据质量的检查。可以在表规则配置界面,点击关联调度,配置规则与任务的绑定关系。 点击关联调度,可以与已提交到调度的节点任务进行绑定,我们会根据血缘关系给出推荐绑定的任务,也支持自定义绑定。 选中搜索结果后,点击添加,添加完毕后即可完成与调度节点任务的绑定。 关联调度后,表名后面的小图标会变成蓝色。 配置任务订阅 关联调度后,每次调度任务运行完毕,都会触发数据质量的校验,但是我们如何去跟进校验结果呢?数据质量支持设置规则订阅,可以针对重要的表及其规则设置订阅,设置订阅后会根据数据质量的校验结果,进行告警。若数据质量校验结果异常,则会根据配置的告警策略进行通知。 点击订阅管理,设置接收人以及订阅方式,目前支持邮件通知及邮件和短信通知。 订阅管理设置完毕后,可以在我的订阅中进行查看及修改。 建议将全部规则订阅,避免校验结果无法及时通知。 ods_user_info_d ods_user_info_d 表的数据来至于rds的数据库,为用户信息表。我们在配置规则的时候,需要配置表的行数校验;还需要配置主键唯一的校验,避免数据重复。 同样,我们还是需要先配置一个分区字段的监控规则,监控的时间表达式为:dt=$[yyyymmdd-1],配置成功后,在已添加的分区表达式中可以看到成功的分区配置记录。 分区表达式配置完毕后,点击右侧的创建规则,进行数据质量的校验规则配置。添加表行数的监控规则,规则强度设置为强,比较方式设置为期望值不等于0。 添加列级规则,设置主键列(uid)为监控列,模板类型为:字段重复值个数校验,规则设置为弱,比较方式设置为字段重复值个数小于1,设置完毕后,点击批量保存按钮即可。 此配置主要是为了避免数据重复,导致下游数据被污染的情况。 请不要忘记试跑->关联调度->规则订阅。 ods_log_info_d ods_log_info_d 这张表的数据,主要是解析ods_raw_log_d 表里的数据,鉴于日志中的数据无法配置过多监控,只需配置表数据不为空的校验规则即可。先配置表的分区表达式为:dt=$[yyyymmdd-1] 配置表数据不为空的校验规则,规则强度设置为强,比较方式设置为期望值不等于0,设置完毕后,点击批量保存按钮即可。 请不要忘记试跑->关联调度->规则订阅。 dw_user_info_all_d dw_user_info_all_d 这个表是针对ods_user_info_d 和 ods_log_info_d 表的数据汇总,由于此流程较为简单,ods层又都已配置了表行数不为空的规则,所以此表不进行数据质量监控规则的配置,以节省计算资源。 rpt_user_info_d rpt_user_info_d 表是数据汇总后的结果表,根据此表的数据,我们可以进行表行数波动监测,针对主键进行唯一值校验等。先配置表的分区表达式:dt=$[yyyymmdd-1] 然后配置监控规则,单击右侧创建规则,点击添加监控规则。添加列级规则,设置主键列(uid)为监控列,模板类型为:字段重复值个数校验,规则设置为弱,比较方式设置为字段重复值个数小于1。 继续添加监控规则,添加表级规则,模板类型为:SQL任务表行数,7天波动检测;规则强度设置为弱,橙色阈值设置成0%,红色阈值设置成50%(此处阈值范围根据业务逻辑进行设置),配置完毕后,点击批量保存即可。 注:此处我们监控表行数主要是为了查看每日uv的波动,好及时了解应用动态。 请不要忘记试跑->关联调度->规则订阅。 大家可能注意到了,我们在设置表规则强度的时候,数据仓库中越底层的表,设置强规则的次数越多。那是因为ods层的数据作为数仓中的原始数据,一定要保证其数据的准确性,避免因ods层的数据质量太差而影响其他层的数据,及时止损。 数据质量还提供了一个任务查询的界面,在此界面上,我们可以查看已配置规则的校验结果。
【转】深入解读:获Forrester大数据能力高评价的阿里云DataWorks思路与能力 2018年3月13日Forrester发布了Now Tech: Cloud Data Warehouse Q1 2018报告。报告对云化数据仓库(Cloud Data Warehouse, CDW)的主要功能、区域表现、细分市场和典型客户等进行了全面评估,最终AWS、阿里巴巴、Google、微软四大巨头杀入全球一线阵营。阿里巴巴DataWorks+MaxCompute成为唯一入选的中国产品。报告中,Forrester强调了CDW的四方面核心能力: 灵活部署:CDW应具有多种灵活的部署模式。针对小型客户,CDW应可提供在线多租户的模式,使客户有能力快速调集计算资源,在数分钟内完成数据仓库的部署。针对大中型客户,CDW应提供独占式或本地部署的模式,提供强大的计算性能和绝对的安全保障,同时屏蔽复杂的技术细节; 高效数据上云:对于未将数据仓库云化的客户,或者采用线上-线下混合架构的客户,CDW应提供快速、低成本的方式,帮助用户完成数据集成。 多样化分析手段:CDW应提供多种技术手段,帮助用户在各种业务场景中,获得想要的数据加工能力。 安全性:CDW的安全性应全面考虑数据加密、审计、脱敏、访问控制等各方面。 DataWorks作为阿里巴巴CDW服务能力的核心,为何能获得Forrester的青睐呢?今天我们来做一个解读。 DataWorks产品架构 在正式开始解读之前,我们先来了解一下DataWorks在阿里云CDW服务体系中的角色,以及DataWorks的产品架构。 在阿里云的众多产品中,DataWorks和MaxCompute共同构成了CDW服务能力的核心。其中,MaxCompute作为存储计算引擎,扮演了IaaS层支撑的角色,为使用者提供了海量可靠的大数据表存储,以及SQL执行的能力。但是,仅仅有了MaxCompute是不够的。为了让大数据技术能真正的给客户赋能,还需要数据开发、数据集成等一系列CDW服务,而DataWorks就提供了较为完整的解决方案。具体来看,她包含8个主要模块: 数据集成:异构数据集成,将海量的数据从各种源系统汇集到大数据平台 数据开发:数据仓库设计和ETL开发过程 监控运维:ETL线上作业的运维监控 实时分析:实时探查和分析数据 数据资产管理:元数据管理、数据地图、数据血缘、数据资产大图等 数据质量:数据质量探查、监控、校验和评分体系 数据安全:数据权限管理,数据的分级打标、脱敏,以及数据审计 数据服务:数据共享和数据交换,数据API服务 灵活部署 Forrester在报告中大篇幅的阐述了多种部署形态的必要性,并对多家CDW进行了对比,而DataWorks是第一阵营中为数不多的提供多种部署方式的产品。 首先,作为阿里巴巴集团数据中台体系的核心,DataWorks从2009年开始便支持阿里集团、蚂蚁金服、菜鸟等全集团业务。只要使用了淘宝、天猫、蚂蚁金服等产品的数据服务,就有可能间接使用了DataWorks的计算服务。 其次,DataWorks已在公有云中开放。截止目前,DataWorks已服务4000+公有云客户,支撑了新浪微博、人人车、天弘基金等重要客户。 最后,DataWorks还支持专有云输出。作为大数据能力赋能的重要手段,DataWorks出现在了Apsara Enterprise等阿里云专有云解决方案中。从2015年至今,已支撑了包括“城市大脑”、“最多跑一次”等重量级政企项目。通过灵活的部署方式,DataWorks可以满足多种不同形态的客户需求。对于小型用户,可以通过公有云方式灵活支撑;对于大中型客户,专有云或混合云的解决方案也完全可以满足客户需求。 高效数据上云 高效的数据集成方式对企业数据上云的意义不言而喻。在初始上云阶段,企业需要把自己的数据资产快速安全的迁移到云上;在持续运营阶段,企业需要将各种形态的数据输入到CDW中,并将CDW中加工完成的数据结果输出到各个业务单元。 DataWorks的数据集成提供了对多种类型数据源进行读写的能力,包括对关系型数据库、NoSQL数据库、大数据数据库、文本存储(FTP)等,能对数据源头的数据资源能够进行统一清点,并能够在复杂网络情况下对异构的数据源进行数据同步与集成。在具体的导入任务编排上,DataWorks支持离线数据的批量、全量、增量同步,支持分钟、天、小时、周、月来自定义同步时间。 DataWorks的数据集成还具有数据流管控的能力,能够从脏数据、数据流速、并发线程数等多个维度管控数据流的行为,多方位节约用户成本,实现精益化管理。 多样化分析手段 DataWorks提供了强大的数据开发IDE,支持从SQL代码编辑、集成任务编辑到业务流程DAG图的可视化编辑。而多人在线协作功能和任务脚本的版本管理功能也非常切合企业级数据开发的实际需求。除了常规的离线处理任务外,DataWorks还提供了轻量级工具“数据分析工作台”,充分利用MaxCompute的计算能力,满足用户即席数据分析的需求。 据悉,DataWorks近日还更新了拖曳式业务流程编辑功能,进一步改善用户体验,打造可能是最好用的数据开发IDE。 安全性 DataWorks将数据安全能力视为重中之重,敏感数据防护更需要符合行业规定和数据隐私法律等规定。DataWorks提供了数据安全模块,通过以下几方面提供了全方位的数据安全保护: 多租户隔离:DataWorks拥有自己的多租户权限模型。租户可按需申请资源配额,独立管理自己的资源;租户也可以独立管理自有的数据、权限、用户、角色,彼此隔离,以确保数据安全。 数据安全等级设定:通过数据安全等级,发现和定位敏感数据,明确其在数据资源平台上的分布情况,根据定义的敏感数据类型自动发现敏感数据,并为其分级分类。通常分为绝密、机密、正常等等级进行对应安全规则保障。 数据访问审计:DataWorks对于特权用户的访问有严格的审查流程,包括何时访问,执行哪些操作,执行顺序等等。记录审计特权用户的访问记录,可以确保特权用户在正确的时间完成了正确的操作,审查是否有越轨行为的出现,进而保证数据系统的安全。 数据脱敏:DataWorks能够在在不确定能够排除那些用户,那些访问地址,甚至那些字段为可疑或者有害访问时,关注数据内容本身,抓住敏感信息点,并有针对性地对该部分信息进行动态访问遮蔽,从而达到保护数据安全的目的。目前,DataWorks已通过了公安部信息安全等级保护三级认证。 总结 随着社会各行各业“互联网+”改革的深入,企业对数据资产的管理、加工、利用的诉求越来越强烈。利用云计算技术,互联网公司得以快速的将自身的大数据处理能力对外赋能。这也是在Forrester的榜单中,全球主要的四家云服务公司,得以超越Oracle、IBM等老牌数仓技术公司,成为一线CDW供应商的原因。 得益于阿里巴巴多年的数据利用经验沉淀,DataWorks在部署模式、数据集成、分析手段、数据安全等各方面都实现了与企业级需求的高度契合。 据了解,DataWorks还会持续输出更多先进的数据管理理念,包括实时数据集成、数据资产分析等。将云计算技术与数仓管理方法论有机结合,保持不断迭代,致力于打造“最适合于大数据数仓建设的平台”,我想这正是DataWorks入选Forrester CDW榜单的原因。 本文转自:深入解读:获Forrester大数据能力高评价的阿里云DataWorks思路与能力
解决方案 在管理控制台 中的调度资源列表里修改自定义资源组的归属项目。 修改成功后,即可在运维中心里修改资源组时找到该资源组。
业务日期和定时时间结合调度参数使用 关于调度参数的使用,可以参考一下官网文档:参数配置。给大家解析一下这篇文档: DataWorks调度系统参数: 调度系统参数:这两个调度系统参数无需赋值,可直接使用。 ${bdp.system.cyctime}:定义为一个实例的定时运行时间,默认格式为:yyyymmddhh24miss。 ${bdp.system.bizdate}:定义为一个实例计算时对应的业务日期,业务日期默认为运行日期的前一天,默认以 yyyymmdd 的格式显示(业务日期不精确到时分秒)。 DataWorks 自定义调度参数:有时候我们需要对时间参数进行加减,此时使用调度系统参数已经无法满足我们的需求了。面对这种情况,DataWorks 提供了自定义调度参数,用户可根据自己的业务需求,灵活的对时间参数进行加减,完美的解决各种复杂的场景。 自定义系统参数 自定义系统参数是以 bdp.system.cyctime 为基准的,任何的时间加减都是以定时时间为基线,向上或者向下移动。 举个例子: 代码为: select ${today} from dual ; 注 :其中 ${today} 是声明变量 调度配置为:today = $[yyyymmdd] 注:其中 $[yyyymmdd] 是给声明的变量赋值 测试运行的时候,选择的业务日期是 20180305,测试运行时,日志中打印出来的实际运行sql为:select 20180306 from dual; 附上一张步骤图 敲黑板:请注意调度参数的配置时 , 声明变量的符号和赋值的符号是不一样的,详情如下: ${} 这个符号是声明变量时使用的; $[] 这个符号是给变量赋值的时候使用的; 以下提供一些调度参数的赋值方法: 后N年:$[add_months(yyyymmdd,12*N)] 前N年:$[add_months(yyyymmdd,-12*N)] 后N月:$[add_months(yyyymmdd,N)] 前N月:$[add_months(yyyymmdd,-N)] 后N周:$[yyyymmdd+7*N] 前N周:$[yyyymmdd-7*N] 后N天:$[yyyymmdd+N] 前N天:$[yyyymmdd-N] 后N小时:$[hh24miss+N/24] 前N小时:$[hh24miss-N/24] 后N分钟:$[hh24miss+N/24/60] 前N分钟:$[hh24miss-N/24/60] 小时级调度的例子 例一 业务场景1:查看业务日期为 20180305 的小时任务,上午 3 点的实例,运行时执行的代码。 代码:select ${min} from dual ; 注:其中 ${min} 是声明变量 调度配置:min = $[yyyymmddhh24miss] 注:其中 $[yyyymmddhh24miss] 是给声明的变量赋值 测试运行时,日志中的运行代码为:select 20180306030000 from dual ; 例二 业务场景2:如何获得业务日期为 20180305 的小时任务,上午 3 点的实例,前 15 分钟的时间。 代码 : select ${min} from dual; 注:其中 ${min} 是声明变量 调度配置:min = $[yyyymmddhh24miss-15/24/60] 注:其中 $[yyyymmddhh24miss-15/24/60] 是给声明的变量赋值 测试运行时,日志中的运行代码为:select 20180306024500 from dual ; 测试调度参数 有不少同学可能没有接触过如何测试调度参数,这里放上我之前写的一篇文章《解析Dataworks中的运行和测试运行的区别》 ,调度参数和测试运行是需要结合使用的,没有经过调度系统,调度参数是无法生效的。 注:如果对此还有不了解的地方,请加入钉钉群,AT 彭敏 & 李珍珍获取技术支持。
安装hadoop 安装好java 下载并解压hadoop-2.7.4.tar.gz 创建HADOOP_HOME环境变量 下载hadoop.dll和winutils,下载地址如下:windows环境下hadoop依赖。下载完毕后放到hadoop安装目录的bin文件夹下 到hadoop安装目录,创建data文件夹,然后在data下分别创建datanode、namenode两个文件夹 配置基本已经完成,如果你想改访问路径,可以到etc/hadoop目录下的core-site.xml文件修改: <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration> 运行hadoop 切换到etc/hadoop目录,运行hadoop-env.cmd 切换到bin目录然后,格式化HDFS文件系统,执行命令:hdfs namenode -format 到这里,你的hadoop就可以正常使用了。可以查看一下版本,bin目录执行 hadoop version 启动 cd到hadoop的sbin目录,运行start-all.cmd 在浏览器中输入 http:\localhost:50070打开hadoop的web管理网页即可。 参考文档:windows下部署Hadoop2.7.4
row_number() row_number() over(partition by col1[, col2…] order by col1 [asc|desc][, col2[asc|desc]…]) 函数说明: 可以用于开窗,排序,计数,返回当前窗口的排序值。 参数说明:partition by col1[, col2..]:指定开窗口的列。 order by col1 [asc|desc], col2[asc|desc]:指定结果返回时的排序的值。 WM_CONCAT 函数声明:string wm_concat(string separator, string str) 函数说明:该函数用指定的 spearator 做分隔符,链接 str 中的值。可以用于多行变一行。 参数说明:separator:String 类型常量,分隔符。其他类型或非常量将引发异常。str:String 类型,若输入为 Bigint,Double 或者 Datetime 类型,会隐式转换为 String 后参与运算,其它类型报异常。返回值:返回 String 类型。
Q:子账号使用DataWorks需要选择什么授权策略? A:DataWorks可以无需RAM单独配置权限,但若子账号需要创建项目,可给授权 DataWorks给子账号使用的正常流程是:主账号创建项目->主账号新建子账号->将子账号加入项目并赋予角色->子账号登录及更新个人信息 注: 主账号新建子账号时,创建AK这一步的时候,AK一定要保存好,不然子账号在更新个人信息的时候,还需要主账号重新去创建一次AK。 Q: 我进入了 DataWorks(大数据开发套件),在哪里写命令? A:可以在数据开发页面,新建ODPS_SQL任务,在SQL任务中写SQL脚本。 要是不知道怎么进入数据开发页面,那就看看这个文档吧:使用说明 Q: 关于创建任务时的一点疑惑 A: 任务类型:节点任务是单个的任务;工作流任务是指,一个工作流任务中可以包含多个节点任务(最多30个节点任务)。调度类型:手动任务是只能手动触发运行的 ;周期调度是指,我们会根据您任务的调度配置,定时去运行您的任务;调度类型一旦确认将无法修改。 Q:为什么要提交任务,这个提交是提交到哪里,提交后有什么用? 提交:是 DataWorks 特有的一个逻辑,没有提交的任务代码,是不能享受 DataWorks 强大的调度功能的。任务提交,是提交到了哪里呢?任务提交是提交到了调度系统,调度系统的功能是:根据您任务中的调度配置去运行任务。您只需要配置好任务的运行周期和任务之间的依赖关系,就再也无需担心任务的运行了。简直是给任务找了一个保姆,一键托管呐。 说了这么多,任务的调度配置在哪里呢? 给DataWorks 团队一个赞,简直是太好用了~ hahaha~~ 插播一个小广告,DataWorks团队招产品、技术、测试、UED 有意向可以钉钉联系彭敏! Q:DataWorks 为什么提交了任务以后,任务没有运行呢? A: 我设置了一个每小时跑一次的任务,提交了任务以后,为什么接下来的一个小时,这个任务还没有开始运行呢?是因为DataWorks 的调度系统,是当天晚上23.30开始生成第二天需要运行的任务实例,所以提交的任务要等到第二天才会自动运行哦。 注意:如果超过了23.30提交的任务,可能就赶不上当天批量生成实例这趟车了,只能等下一趟(也就是第三天才会开始运行)。但如果需要快速运行起来,可以选择测试运行和补数据运行~ 怕大家不能理解为什么产品逻辑要这么设置,我就给大家解释一下:如果咱们要算公司每天的销售额,总不能是当天晚上算吧(要是算完以后,又有人来消费了,还得再加上,太麻烦了),所以我们都是今天计算昨天的销售额(这个 ‘昨天’ 我们也叫业务日期,请大家在选择时间的时候,注意看清楚,选择的是业务日期还是运行日期)。 Q:如何测试运行一个任务呢? A: 我这个SQL 已经编辑好了,我现在想运行一下这个SQL ,来测试一下我的代码,那我该怎么运行这个SQL呢? 运行SQL任务有两种方式,如上图所示: 方式一:运行,这种运行方式是直接将SQL代码下发到底层去执行,好处是方便快捷,坏处是运行结果只保留在页面上,页面刷新/关闭后就没有了,且寻找历史执行记录相对麻烦。 方式二:测试运行,这种运行方式是需要将代码提交到调度系统,然后触发调度系统生成实例快照,成功生成实例后,才会开始运行任务。好处是可以使用调度系统参数、能够看到每一次运行的运行记录(运行记录保留30天),坏处是相对麻烦一点。 Q:如何补数据运行一个任务呢? 补数据前咱们先了解一下,啥时候需要做补数据这个操作,补数据能干啥?补数据可以选择一个业务流程(通过多个任务间的相互依赖,完成了一个业务流程),还能选择多个业务日期(其实就是能选好多天),这样即使代码写错了,还是能有挽救的机会的嘛,下面有两个经典场景,仅供参考: 如果任务周期运行后,发现今天任务的运行结果不符合预期,想重跑一下,那么可以选择补数据运行来实现(为啥用补数据,是因为补数据可以选择下游节点,测试运行只针对单个节点有效)。 想测试一下任务的调度配置是否有效,请选择补数据运行,不仅可以选择下游节点,还能选择任务的业务日期(一次操作,可以补很长一段时间的任务呢),完美解决不知道调度配置是否符合预期的问题。 A: 说了那么多,下面说一下怎么补数据。补数据这个步骤需要到 运维中心 里面去操作,运维中心在哪看图片~ 如果在运维中心里没有找到心仪的任务,那么说明你打开的方式不对,你可以换种方式打开,比如说: 看看任务是否提交了; 看看任务的类型是否选对了; 选中任务后,就可以去选择补数据的任务和日期了。 再多说一句:补数据的时候,如果任务和时间选择的都比较多,会批量生成大量的任务实例,请小主谨慎操作~ Q:如何查看任务的日志? A:任务测试运行以后,页面会有一个链接跳转到运维中心-测试实例下,可以选中任务,单击查看节点运行日志,即可查看到任务的运行日志(如果任务有报错,您不知该如何处理,请将日志以txt格式保存,通过工单反馈给我们)。 如有其他问题,请加钉钉群~ 加群后可以直接 AT 李珍珍!
有很多用户在使用Dataworks的数据开发中运行SQL和在数据集成中运行同步任务时,都会有一个疑惑。我在页面上运行和测试运行有什么区别呢?为什么我明明配置了系统参数,在代码中运行时,却没有自动解析,而提醒我去填写系统变量的临时值? 下面我就给大家讲讲这两者的主要区别。 页面上的运行 页面上的运行是不会经过调度系统的,直接将任务下发到底层去执行。所以在使用了调度参数后,运行时,是需要指定调度参数解析出来的值的。页面上触发的运行是不会生成实例的,所以也就没有办法去指定运行任务的机器,只能下发到Dataworks的默认资源组上去执行。 数据开发在页面上运行时如何给自定义参数赋值 在数据开发中,创建了SQL节点任务时,在SQL中使用了自定义参数。点击页面上的运行,会弹出一个提示框,在这个提示框里一定要填一个具体的值,而不要填$[yyyymmdd] 这种,不然在代码中$[yyyymmdd]是不会识别出来的。 数据集成在页面上运行时如何给自定义参数赋值 在数据集成中,创建脚本模式的任务时。在脚本中使用了自定义参数,保存后,点击页面上的运行,提示我需要给自定义参数赋值。我填了一个值以后,却没有解析出来呢? 原因是因为:系统参数和自定义系统参数,是调度系统的参数,只有通过调度系统后,才会解析出来。而我们点击的运行,是没有经过调度系统的,所以提示你输入的自定义变量参数 是需要填一个具体的值才行,这样在执行任务的时候,才会直接替换掉。 测试运行 测试运行会通过调度系统,去生成实例的,所以在使用了调度参数后,运行时,调度参数就会自动解析出来了,而且可以指定实例运行所在的资源组。
现在还有遇到吗,如果下次再遇到了的话,你可以加入到DataWorks的钉钉群(11718465),在钉钉群里反馈一下,我们不会一直盯着云栖社区,钉钉群的响应速度会快很多。
这种有规则的表名,在配置的时候,可以在table 值部分,使用 "table":["table_[1-1000]"] 这种方式。
试试DataWorks的循环节点,如果分库分表都是 1、2、3、4 这种依次递增的话,循环节点会比较好实现。
需要点击去购买,购买成功后,将可以选择对应的服务。
需要在https://data.aliyun.com/console/akinfo 界面填写手机号和邮箱信息,才能收到告警的邮件信息。
https://help.aliyun.com/knowledge_detail/74279.html 可以看看这个文档,如果配置的走公网的话,是直接走公网的。
在数据集成的向导模式下,可以在通道控制中,选择任务运行的资源组。
在数据集成的脚本模式下,顶部可以选择任务运行的资源组。
datawork无法支持在一个任务中将多个数据源中的数据同步到一个数据源中。无法支持将mysql的数据和oss的数据在一个任务中同步到odps中,你可以拆分成两个任务,mysql同步到odps,oss同步到odps等。
一般在DataWorks上,设置了任务告警,但是没有收到报警信息,这个时候需要查看一下,是否在数加控制台的个人中心里设置手机号及邮箱信息。
详细地址如下:
https://data.aliyun.com/console/akinfo?spm=a2c0j.7906784.orgInfo.4.16df62dcQHJA97
数据集成可单独购买,但如果需要用到Maxcompute的分析能力的话,需要购买Maxcompute。