华为云用户手册

  • 事务模式迁移 CDM 的事务模式迁移,是指当CDM作业执行失败时,将数据回滚到作业开始之前的状态,自动清理目的表中的数据。 参数位置:创建表/文件迁移的作业时,如果目的端为关系型数据库,在目的端作业配置的高级属性中,可以通过“先导入阶段表”参数选择是否启用事务模式。 参数原理:如果启用,在作业执行时CDM会自动创建临时表,先将数据导入到该临时表,导入成功后再通过数据库的事务模式将数据迁移到目标表中;导入失败则将目的表回滚到作业开始之前的状态。 图1 事务模式迁移 如果“导入开始前”选择“清除部分数据”或“清除全部数据”,CDM的事务模式不会回滚已经删除的数据。 父主题: 关键操作指导
  • 操作步骤 登录CDM管理控制台。单击左侧导航上的“集群管理”,进入集群管理界面。 图1 集群列表 “创建来源”列仅通过 DataArts Studio 服务进入数据集成界面可以看到。 单击集群名称后,选择“标签”页签。 图2 修改集群配置 单击“添加/编辑标签”,通过添加、修改标签为CDM集群设置资源标识。 图3 添加标签 一个集群最多可添加10个标签。 标签键(key)的最大长度为36个字符,标签值(value)的最大长度为43个字符。 (可选)在标签列表中,单击标签操作列“删除”,删除CDM集群标签。 通过以下两种方式筛选出所配置标签的资源。 在标签管理服务中,选择资源搜索条件,单击“搜索”即可筛选出所配置标签的资源。 在集群列表中,单击标签搜索,筛选出所配置标签的资源。
  • 查看集群基本信息 登录CDM管理控制台。单击左侧导航上的“集群管理”,进入集群管理界面。 或参考访问DataArts Studio实例控制台,登录DataArts Studio管理控制台。在DataArts Studio控制台首页,选择对应工作空间的“数据集成”模块,进入CDM首页。 图1 集群列表 “创建来源”列仅通过DataArts Studio服务进入数据集成界面可以看到。 单击集群名称,可查看集群的基本信息。 图2 CDM集群的配置信息
  • 操作场景 CDM集群已经创建成功后,您可以查看集群基本信息,并修改集群的配置。 查看集群基本信息: 集群信息:集群版本、创建时间、项目ID、实例ID和集群ID等。 节点配置:集群规格、CPU和内存配置等信息。 网络信息:网络配置。 支持修改集群的以下配置: 消息通知 :CDM的迁移作业(目前仅支持表/文件迁移的作业)失败时,或者EIP异常时,会发送短信或邮件通知用户。该功能产生的消息通知不会计入收费项。 用户隔离:控制其他用户是否能够查看、操作该集群中的迁移作业和连接。 开启该功能时,该集群中的迁移作业、连接会被隔离,华为账号下的其他 IAM 用户无法查看、操作该集群中的迁移作业和连接。 按组批量启动作业会运行组内所有作业。如果开启了用户隔离功能,即使华为账号下的其他IAM用户无法查看到组内作业,按组批量启动作业依然会将组内作业运行,因此在用户隔离场景不建议使用按组批量启动作业功能。 关闭该功能时,该集群中的迁移作业、连接信息可以用户共享,华为账号下的所有拥有相应权限的IAM用户可以查看、操作迁移作业和连接。 注意,用户隔离关闭后需要重启集群VM才能生效。 最大抽取并发数:限制作业运行的总抽取并发数,如果当前所有作业总并发数超出限制,超出部分将排队等待。 注意,最大抽取并发数取值范围为1-1000,建议根据集群规格进行配置,建议值详见最大抽取并发数。过高的并发数可能导致内存溢出,请谨慎修改。 此处的“最大抽取并发数”参数与作业配置管理处的“最大抽取并发数”参数同步,在任意一处修改即可生效。
  • 操作场景 CDM集群创建完成后,支持解绑或绑定EIP。EIP即弹性公网IP,由虚拟私有云(Virtual Private Cloud,简称VPC)负责其计费。 如果CDM需要访问本地数据源、Internet的数据源,或者跨VPC的云服务,则必须要为CDM集群绑定一个弹性IP,或者使用NAT网关让CDM集群与其他弹性云服务器共享弹性IP访问Internet,具体操作请见添加SNAT规则。 如果用户对本地数据源的访问通道做了SSL加密,则CDM无法通过弹性IP连接数据源。
  • 适用场景 在某项目搬迁场景下,当您需要补充以前时间段内的历史业务数据,需要查看历史数据的详细信息时,可以使用补数据特性。 补数据是指作业执行一个调度任务,在过去某一段时间里生成一系列的实例。用户可以通过补数据,修正历史中出现数据错误的作业实例,或者构建更多的作业记录以便调试程序等。 补数据作业除了支持SQL脚本,其他节点也支持。 如果SQL脚本的内容有变化,补数据作业运行的是最新版本的脚本。 使用补数据功能时,如SQL中变量是DATE,脚本中就写${DATE},在作业参数中会自动增加脚本参数DATE,脚本参数DATE的值支持使用EL表达式。如果是变量时间的话,需要使用DateUtil内嵌对象的表达式,平台会自动转换成历史日期。EL表达式用法可参考EL表达式。 补数据作业除了支持作业参数,脚本参数或者全局环境变量也支持。
  • 通过For Each节点提取输出结果值 场景说明 结合For Each节点及其支持的Loop内嵌对象EL表达式#{Loop.current[0]},循环获取前一节点输出的结果值。 本例中, MRS Hive SQL节点返回多字段的二维数组,选择For Each节点和EL表达式#{Loop.current[]},再通过For Each循环调用Kafka Client节点子作业,Kafka Client节点发送的数据也定义为#{Loop.current[]},通过此配置即可获取MRS Hive SQL节点输出的结果值。 为便于查看最终获得的结果值,本例中For Each节点子作业选择Kafka Client节点进行演示。在实际使用中,您可以根据您的业务需求选择子作业节点类型,在节点任务中应用Loop内嵌对象EL表达式,即可获取For Each前一节点返回的结果值。 For Each节点主作业编排如图5所示。其中,For Each节点的关键配置如下: 数据集:数据集就是HIVE SQL节点的Select语句的执行结果。使用EL表达式#{Job.getNodeOutput("select95")},其中select95为前一个节点的名称。 子作业参数:子作业参数是子作业中定义的参数名,然后在主作业中定义的参数值,传递到子作业以供使用。此处子作业参数名定义为name和score,其值为分别为数据集中的第一列和第二列数值,使用EL表达式#{Loop.current[0]}和#{Loop.current[1]}。 图5 主作业样例 而For Each节点中所选的子作业,则需要定义For Each节点中的子作业参数名,以便让主作业识别参数定义,作业如图6所示。 图6 子作业样例 配置方法 开发子作业 登录DataArts Studio控制台,找到所需要的DataArts Studio实例,单击实例卡片上的“进入控制台”,进入概览页面。 选择“空间管理”页签,在工作空间列表中,找到所需要的工作空间,单击工作空间的“数据开发”,系统跳转至数据开发页面。 在“作业开发”页面,新建数据开发子作业EL_test_slave。选择一个Kafka Client节点,并配置作业参数,编排图6所示的作业。 此处需将参数名填写为name和score,仅用于主作业的For Each节点识别子作业参数;参数值无需填写。 配置Kafka Client节点参数。发送数据定义为:${name}: ${score},选择Kafka连接和Topic名称。 此处不能使用EL表达式#{Job.getParam("job_param_name")} ,因为此表达式只能直接获取当前作业里配置的参数的value,并不能获取到父作业传递过来的参数值,也不能获取到工作空间里面配置的全局变量,作用域仅为本作业。 而表达式${job_param_name},既可以获取到父作业传递过来的参数值,也可以获取到全局配置的变量。 图7 配置Kafka Client节点参数 配置完成后提交子作业。
  • 场景说明 使用EL表达式#{Job.getNodeOutput("前一节点名")}获取的前一节点的输出结果时,输出结果为二维数组形式 ,形如[["Dean",...,"08"],...,["Smith",...,"53"]]所示。为获取其中的值,本案例提供了如表1所示的两个常见方法示例。 表1 获取结果值常见方法 方法 关键配置 适用场景要求 通过StringUtil提取输出结果值 当SQL节点的输出结果只有一个字段,形如[["11"]]所示时,可以通过StringUtil内嵌对象EL表达式分割二维数组,获取前一节点输出的字段值: #{StringUtil.split(StringUtil.split(StringUtil.split(Job.getNodeOutput("前一节点名"),"]")[0],"[")[0],"\\"")[0]} 通过StringUtil提取输出结果值配置简单,但对适用场景有如下要求: 前一SQL节点的输出结果只有一个字段,形如[["11"]]所示。 输出结果值数据类型为String,需要应用场景支持String数据类型。例如当需要使用IF条件判断输出结果值的数值大小时,不支持String类型,则不能使用本方法。 通过For Each节点提取输出结果值 通过For Each节点,循环获取数据集中二维数组的值: For Each节点数据集:#{Job.getNodeOutput('前一节点名')} For Each节点子作业参数:#{Loop.current[索引]} 通过For Each节点输出结果值适用场景更广泛,但需将作业拆分为主作业和子作业。
  • 根据前一个节点的执行状态进行IF条件判断 场景说明 根据前一个CDM节点是否执行成功,决定执行哪一个IF条件分支。基于图1的样例,说明如何设置IF条件。 图1 作业样例 配置方法 登录DataArts Studio控制台,找到所需要的DataArts Studio实例,单击实例卡片上的“进入控制台”,进入概览页面。 选择“空间管理”页签,在工作空间列表中,找到所需要的工作空间,单击工作空间的“数据开发”,系统跳转至数据开发页面。 在“作业开发”页面,新建数据开发作业,然后分别选择CDM节点和两个Dummy节点,选中连线图标并拖动,编排图1所示的作业。 其中CDM节点的失败策略需要设置为“继续执行下一节点”。 图2 配置CDM节点的失败策略 右键单击连线,选择“设置条件”,在弹出的“编辑EL表达式”文本框中输入IF条件。 每一个条件分支都需要填写IF条件,IF条件为通过EL表达式语法填写三元表达式。当三元表达式结果为true的时候,才会执行连线后面的节点,否则后续节点将被跳过。 此Demo中使用的EL表达式为“#{Job.getNodeStatus("node_name")}”,这个表达式的作用为获取指定节点的执行状态,成功状态返回success,失败状态返回fail。本例使用中,IF条件表达式分别为: 上面的A分支IF条件表达式为: #{(Job.getNodeStatus("CDM")) == "success" ? "true" : "false"} 下面的B分支IF条件表达式为:#{(Job.getNodeStatus("CDM")) == "fail" ? "true" : "false"} 输入IF条件表达式后,配置IF条件匹配失败策略,可选择仅跳过相邻的下一个节点,或者跳过该IF分支后续所有节点。配置完成后单击确定,保存作业。 图3 配置失败策略 测试运行作业,并前往实例监控中查看执行结果。 待作业运行完成后,从实例监控中查看作业实例的运行结果,如图4所示。可以看到运行结果是符合预期的,当前CDM执行的结果为fail的时候,跳过A分支,执行B分支。 图4 作业运行结果
  • 使用案例 案例场景 因数据规整要求,需要周期性地将多组 DLI 源数据表数据导入到对应的DLI目的表,如表1所示。 表1 需要导入的列表情况 源数据表名 目的表名 a_new a b_2 b c_3 c d_1 d c_5 e b_1 f 如果通过SQL节点分别执行导入脚本,需要开发大量脚本和节点,导致重复性工作。在这种情况下,我们可以使用For Each节点进行循环作业,节省开发工作量。 配置方法 准备源表和目的表。为了便于后续作业运行验证,需要先创建DLI源数据表和目的表,并给源数据表插入数据。 创建DLI表。您可以在DataArts Studio数据开发中,新建DLI SQL脚本执行以下SQL命令,也可以在 数据湖探索 (DLI)服务控制台中的SQL编辑器中执行以下SQL命令: /* 创建数据表 */ CREATE TABLE a_new (name STRING, score INT) STORED AS PARQUET; CREATE TABLE b_2 (name STRING, score INT) STORED AS PARQUET; CREATE TABLE c_3 (name STRING, score INT) STORED AS PARQUET; CREATE TABLE d_1 (name STRING, score INT) STORED AS PARQUET; CREATE TABLE c_5 (name STRING, score INT) STORED AS PARQUET; CREATE TABLE b_1 (name STRING, score INT) STORED AS PARQUET; CREATE TABLE a (name STRING, score INT) STORED AS PARQUET; CREATE TABLE b (name STRING, score INT) STORED AS PARQUET; CREATE TABLE c (name STRING, score INT) STORED AS PARQUET; CREATE TABLE d (name STRING, score INT) STORED AS PARQUET; CREATE TABLE e (name STRING, score INT) STORED AS PARQUET; CREATE TABLE f (name STRING, score INT) STORED AS PARQUET; 给源数据表插入数据。您可以在DataArts Studio数据开发模块中,新建DLI SQL脚本执行以下SQL命令,也可以在 数据湖 探索(DLI)服务控制台中的SQL编辑器中执行以下SQL命令: /* 源数据表插入数据 */ INSERT INTO a_new VALUES ('ZHAO','90'),('QIAN','88'),('SUN','93'); INSERT INTO b_2 VALUES ('LI','94'),('ZHOU','85'); INSERT INTO c_3 VALUES ('WU','79'); INSERT INTO d_1 VALUES ('ZHENG','87'),('WANG','97'); INSERT INTO c_5 VALUES ('FENG','83'); INSERT INTO b_1 VALUES ('CEHN','99'); 准备数据集数据。您可以通过以下方式之一获取数据集: 您可以将表1数据导入到DLI表中,然后将SQL脚本读取的结果作为数据集。 您可以将表1数据保存在OBS的 CS V文件中,然后通过DLI SQL或DWS SQL创建OBS外表关联这个CSV文件,然后将OBS外表查询的结果作为数据集。DLI创建外表请参见OBS输入流,DWS创建外表请参见创建外表。 您可以将表1数据保存在HDFS的CSV文件中,然后通过HIVE SQL创建Hive外表关联这个CSV文件,然后将HIVE外表查询的结果作为数据集。MRS创建外表请参见创建表。 本例以方式1进行说明,将表1中的数据导入到DLI表(Table_List)中。您可以在DataArts Studio数据开发模块中,新建DLI SQL脚本执行以下SQL命令导入数据,也可以在数据湖探索(DLI)服务控制台中的SQL编辑器中执行以下SQL命令: /* 创建数据表TABLE_LIST,然后插入表1数据,最后查看生成的表数据 */ CREATE TABLE Table_List (Source STRING, Destination STRING) STORED AS PARQUET; INSERT INTO Table_List VALUES ('a_new','a'),('b_2','b'),('c_3','c'),('d_1','d'),('c_5','e'),('b_1','f'); SELECT * FROM Table_List; 生成的Table_List表数据如下: 图2 Table_List表数据 创建要循环运行的子作业ForeachDemo。在本次操作中,定义循环执行的是一个包含了DLI SQL节点的任务。 进入DataArts Studio数据开发模块选择“作业开发”页面,新建作业ForeachDemo,然后选择DLI SQL节点,编排图3所示的作业。 DLI SQL的语句中把要替换的变量配成${}这种参数的形式。在下面的SQL语句中,所做的操作是把${Source}表中的数据全部导入${Destination}中,${fromTable}、${toTable} 就是要替换的变量参数。SQL语句为: INSERT INTO ${Destination} select * from ${Source}; 此处不能使用EL表达式#{Job.getParam("job_param_name")} ,因为此表达式只能直接获取当前作业里配置的参数的value,并不能获取到父作业传递过来的参数值,也不能获取到工作空间里面配置的全局变量,作用域仅为本作业。 而表达式${job_param_name},既可以获取到父作业传递过来的参数值,也可以获取到全局配置的变量。 图3 循环执行子作业 配置完成SQL语句后,在子作业中配置作业参数。此处仅需要配置参数名,用于主作业ForeachDemo_master中的For Each节点识别子作业参数;参数值无需填写。 图4 配置子作业参数 配置完成后保存作业。 创建For Each节点所在的主作业ForeachDemo_master。 进入DataArts Studio数据开发模块选择“作业开发”页面,新建数据开发主作业ForeachDemo_master。选择DLI SQL节点和For Each节点,选中连线图标并拖动,编排图5所示的作业。 图5 编排作业 配置DLI SQL节点属性,此处配置为SQL语句,语句内容如下所示。DLI SQL节点负责读取DLI表Table_List中的内容作为数据集。 SELECT * FROM Table_List; 图6 DLI SQL节点配置 配置For Each节点属性。 子作业:子作业选择步骤2已经开发完成的子作业“ForeachDemo”。 数据集:数据集就是DLI SQL节点的Select语句的执行结果。使用EL表达式#{Job.getNodeOutput('preDLI')},其中preDLI为前一个节点的名称。 子作业参数:用于将数据集中的数据传递到子作业以供使用。Source对应的是数据集Table_List表的第一列,Destination是第二列,所以配置的EL表达式分别为#{Loop.current[0]}、#{Loop.current[1]}。 图7 配置For Each节点 配置完成后保存作业。 测试运行主作业。 单击主作业画布上方的“测试运行”按钮,测试作业运行情况。主作业运行后,会通过For Each节点自动调用运行子作业。 单击左侧导航栏中的“实例监控”,进入实例监控中查看作业运行情况。等待作业运行成功后,就能查看For Each节点生成的子作业实例,由于数据集中有6行数据,所以这里就对应产生了6个子作业实例。 图8 查看作业实例 查看对应的6个DLI目的表中是否已被插入预期的数据。您可以在DataArts Studio数据开发模块中,新建DLI SQL脚本执行以下SQL命令导入数据,也可以在数据湖探索(DLI)服务控制台中的SQL编辑器中执行以下SQL命令: /* 查看表a数据,其他表数据请修改命令后运行 */ SELECT * FROM a; 将查询到的表数据与给源数据表插入数据步骤中的数据进行对比,可以发现数据插入符合预期。 图9 目的表数据
  • For Each节点与EL表达式 要想使用好For Each节点,您必须对EL表达式有所了解。EL表达式用法请参考EL表达式。 下面为您展示For Each节点常用的一些EL表达式。 #{Loop.dataArray} :For循环节点输入的数据集,是一个二维数组。 #{Loop.current}:由于For循环节点在处理数据集的时候,是一行一行进行处理的,那Loop.current就表示当前处理到的某行数据,Loop.current是一个一维数组,一般定义格式为#{Loop.current[0]}、#{Loop.current[1]}或其他,0表示遍历到当前行的第一个值。 #{Loop.offset}:For循环节点在处理数据集时当前的偏移量,从0开始。 #{Job.getNodeOutput('preNodeName')}:获取前面节点的输出。
  • 适用场景 当您进行作业开发时,如果某些任务的参数有差异、但处理逻辑全部一致,在这种情况下您可以通过For Each节点避免重复开发作业。 For Each节点可指定一个子作业循环执行,并通过数据集对子作业中的参数进行循环替换。关键参数如下: 子作业:选择需要循环执行的作业。 数据集:即不同子任务的参数值的集合。可以是给定的数据集,如“[['1'],['3'],['2']]”;也可以是EL表达式如“#{Job.getNodeOutput('preNodeName')}”,即前一个节点的输出值。 子作业参数:参数名即子作业中定义的变量;参数值一般配置为数据集中的某组数据,每次运行中会将参数值传递到子作业以供使用。例如参数值填写为:#{Loop.current[0]},即将数据集中每行数据的第一个数值遍历传递给子作业。 For Each节点举例如图1所示 。从图中可以看出,子作业“foreach”中的参数名为“result”,参数值为一维数组数据集“[['1'],['3'],['2']] ”的遍历(即第一次循环为1,第二次循环为3,第三次循环为2)。 图1 for each节点
  • 通过EL表达式获取返回值 Rest Client算子可与EL表达式相配合,根据具体的场景选择不同的EL表达式来实现更丰富的用法。您可以参考本教程,根据您的实际业务需要,开发您自己的作业。EL表达式用法可参考EL表达式。 如图3所示,Rest Client调用了MRS服务查询集群列表的API,然后执行Kafka Client发送消息。 使用场景:Kafka Client发送字符串消息,消息内容为集群列表中第一个集群的cluster Id。 关键配置:在Kafka Client中使用如下EL表达式获取Rest API返回消息体中的特定字段:#{JSONUtil.toString(JSONUtil.path(Job.getNodeOutput("Rest_Client_4901"),"clusters[0].clusterId"))} 图3 Rest Client作业样例2
  • 通过“响应消息体解析为传递参数定义”获取返回值 如图1所示,第一个Rest Client调用了MRS服务查询集群列表的API,图2为API返回值的JSON消息体。 使用场景:需要获取集群列表中第一个集群的cluster Id,然后作为参数传递给后面的节点使用。 关键配置:在第一个Rest Client的“响应消息体解析为传递参数定义”配置中,配置clusterId=clusters[0].clusterId,后续的Rest Client节点就可以用${clusterId}的方式引用到集群列表中的第一个集群的cluster Id。 响应消息体解析为参数传递定义时,传递的参数名(例如clusterId)在该作业的所有节点参数中需要保持唯一性,避免和其他参数同名。 图1 Rest Clien作业样例1 图2 JSON消息体
  • 操作场景 当您确认不再使用当前集群后,可以删除当前CDM集群。 删除CDM集群后集群以及数据都销毁且无法恢复,请您谨慎操作! 删除集群前,请您确认如下注意事项: 待删除集群确认已不再使用。 待删除集群中所需的连接和作业数据已通过批量管理CDM作业中的导出作业功能进行备份。 对于购买DataArts Studio服务时系统赠送的CDM集群,非常不建议您进行删除操作。该集群删除后无法再次赠送,只能另外购买。 删除集群后,CDM集群不再按需计费或扣除套餐时长。如果您为删除的CDM集群购买了CDM折扣套餐或包年包月形式的DataArts Studio数据集成增量包,则请参考云服务退订章节进行套餐包退订。
  • 前提条件 已申请VPC、子网和安全组。CDM集群连接云上其它服务时,需确保CDM集群与待连接的云服务在同一个VPC。如果CDM集群与其它云服务所属不同VPC,则CDM集群需要通过EIP连接云服务。 当CDM集群与其他云服务所在的区域、VPC、子网、安全组一致时,可保证CDM集群与其他云服务内网互通,无需专门打通网络。 当CDM集群与其他云服务所在的区域和VPC一致、但子网或安全组不一致时,需配置路由规则及安全组规则以打通网络。配置路由规则请参见如何配置路由规则章节,配置安全组规则请参见如何配置安全组规则章节。 当CDM集群与其他云服务所在的区域一致、但VPC不一致时,可以通过对等连接打通网络。配置对等连接请参见如何配置对等连接章节。 注:如果配置了VPC对等连接,可能会出现对端VPC子网与CDM管理网重叠,从而无法访问对端VPC中数据源的情况。推荐使用公网做跨VPC数据迁移,或联系管理员在CDM后台为VPC对等连接添加特定路由。 当CDM集群与其他云服务所在的区域不一致时,则需要通过公网或者专线打通网络。通过公网互通时,需确保CDM集群已绑定EIP、CDM云上安全组出方向放通云下数据源所在的主机、数据源所在的主机可以访问公网且防火墙规则已开放连接端口。 另外,如果创建了企业项目,则企业项目也会影响CDM集群与其他云服务的网络互通,只有企业项目一致的云服务才能打通网络。
  • 操作场景 DataArts Studio实例中已经包含一个仅用于测试、试用等非正式业务场景的CDM集群(试用版除外)。 如果该集群已经满足您的使用需求,则无需再购买批量数据迁移增量包。 如果您需要CDM集群用于满足业务需求,请通过按需计费方式购买批量数据迁移增量包,详情请参考按需计费方式购买数据集成集群。 如果您需要为购买的CDM集群匹配套餐包用于降低使用成本,请通过套餐包方式购买批量数据迁移增量包,详情请参考套餐包方式购买数据集成集群。 DataArts Studio实例赠送的CDM集群,由于规格限制,仅用于测试、试用等非正式业务场景。用于业务场景的CDM集群可以通过“批量数据迁移增量包”进行购买,且不建议同时作为数据连接Agent代理和运行数据迁移作业使用。
  • 启动作业调度 元数据采集完成后,系统基于最新的作业调度实例产生相关的数据血缘关系。 参考访问DataArts Studio实例控制台,登录DataArts Studio管理控制台。 在DataArts Studio控制台首页,选择对应工作空间的“数据开发”模块,进入数据开发页面。 在数据开发控制台,单击左侧导航栏中的作业开发按钮,进入作业开发页面后,打开已完成血缘配置的作业。 在数据开发中,当作业进行“执行调度”时,系统开始解析血缘关系。 测试运行不会解析血缘。 图1 作业调度 待调度作业成功运行完成后,等待约1分钟左右,数据血缘关系即可生成成功。
  • 自动血缘解析 自动血缘解析无需进行手动配置,当数据开发作业中包含如表1所示节点及场景时,系统支持自动解析血缘关系。 解析SQL节点的血缘时,支持多SQL解析及列级血缘解析,单条SQL语句不支持SQL中含有分号的场景。 表1 支持自动血缘解析的作业节点及场景 作业节点 支持场景 DLI SQL 支持解析DLI中表与表之间数据插入产生的血缘。 支持通过建表语句产生的OBS文件到DLI表之间的血缘。 DWS SQL 支持Insert into等DML操作产生的DWS表之间的血缘。 MRS Hive SQL 支持Insert into/overwrite等DML操作产生的MRS表之间的血缘。 MRS Spark SQL 支持Insert into/overwrite等DML操作产生的MRS表之间的血缘。 CDM Job 支持MRS Hive、DLI、DWS、RDS、OBS以及 CSS 之间表文件迁移所产生的血缘。 ETL Job 支持DLI、OBS、MySQL以及DWS之间的ETL任务产生的血缘。
  • 什么是数据血缘 大数据时代,数据爆发性增长,海量的、各种类型的数据在快速产生。这些庞大复杂的数据信息,通过联姻融合、转换变换、流转流通,又生成新的数据,汇聚成数据的海洋。 数据的产生、加工融合、流转流通,到最终消亡,数据之间自然会形成一种关系。我们借鉴人类社会中类似的一种关系来表达数据之间的这种关系,称之为数据的血缘关系。与人类社会中的血缘关系不同,数据的血缘关系还包含了一些特有的特征: 归属性:一般来说,特定的数据归属特定的组织或者个人,数据具有归属性。 多源性:同一个数据可以有多个来源(多个父亲)。一个数据可以是多个数据经过加工而生成的,而且这种加工过程可以是多个。 可追溯性:数据的血缘关系,体现了数据的生命周期,体现了数据从产生到消亡的整个过程,具备可追溯性。 层次性:数据的血缘关系是有层次的。对数据的分类、归纳、总结等对数据进行的描述信息又形成了新的数据,不同程度的描述信息形成了数据的层次。 DataArts Studio生成的血缘关系图如图1所示,为数据表对象,为作业节点对象,通过对象和箭头的编排表示血缘信息。从血缘关系图中可以看到,wk_02表数据是由wk_01表数据经过hive_1作业节点加工而生成的,wk_02表数据经由hive_2作业节点加工又分别生成了wk_03、wk_04和wk_05的表数据。 图1 数据血缘关系示例
  • DataArts Studio数据血缘实现方案 数据血缘的产生: DataArts Studio数据血缘解析方案包含自动分析血缘和手动配置血缘两种方式。一般推荐使用自动血缘解析的方式,无需手动配置即可生成血缘关系,在不支持自动血缘解析的场景下,再手动配置血缘关系。 自动血缘解析,是由系统解析数据开发作业中的数据处理和数据迁移类型节点后自动产生的,无需进行手动配置。支持自动血缘解析的节点类型和场景请参见自动血缘解析。 手动配置血缘,是在数据开发作业节点中,自定义血缘关系的输入表和输出表。注意手动配置血缘时,此节点的自动血缘解析将不生效。支持手动配置血缘的节点类型请参见手动配置血缘。 数据血缘的展示: 首先在数据目录组件完成元数据采集任务,当数据开发作业满足自动血缘解析要求或已手动配置血缘,然后成功完成作业调度后,则可以在数据目录模块可视化查看数据血缘关系。
  • 计划时间参数 计划时间是指在调度时间内,任务预期调度运行的时间点(即当天)。该参数是通过yyyy、yy、mm、dd、hh24、mi和ss自定义组合而生成的时间参数,其格式可自定义。例如,$[yyyymmdd]、$[yyyy-mm-dd]、$[hh24miss]、$[hh24:mi:ss]和$[yyyymmddhh24miss]等。 yyyy:表示4位的年份,取值为计划时间的年份。 yy:表示2位的年份,取值为计划时间的年份后两位。 mm:表示月份,取值为计划时间的月份。 dd:表示天,取值为计划时间的天。 hh:表示12小时制,取值为计划时间的小时。 hh24:表示24小时制,取值为计划时间的小时。 mi:表示分钟,取值为计划时间的分钟。 ss:表示秒,取值为计划时间的秒。 取N小时前、N分钟前的时间数据请参考表2,该参数不支持通过$[yyyy-N]、$[mm-N]等直接获取多少年前、多少月前的时间数据。 表2 计划时间参数获取说明 计划时间场景 获取方法 后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±N] 前/后N小时 获取该时间数据包含如下两种方式: $[hh24miss±N/24] $[自定义时间格式±N/24]。 例如,取前一个小时的不同时间格式: 取月:$[mm-1/24]。 取年:$[yyyy-1/24]。 取年月:$[yyyymm-1/24]。 取年月日:$[yyyymmdd-1/24]。 取前一天且前一小时:$[yyyymmdd-1-1/24] 前/后N分钟 获取该时间数据包含如下四种方式: $[hh24miss±N/24/60] $[yyyymmddhh24miss±N/24/60] $[mi±N/24/60] $[自定义时间格式±N/24/60] 例如,取计划时间15分钟前的不同时间格式: 取年:$[yyyy-15/24/60] 取年月:$[yyyymm-15/24/60] 取年月日:$[yyyymmdd-15/24/60] 取小时:$[hh24-15/24/60] 取分钟:$[mi-15/24/60] 调度参数替换值在实例生成时已经确定,所以调度参数的替换值不会随着实例实际运行时间的改变而改变。 当调度参数取小时、分钟时,参数替换值由实例的计划时间决定,即由节点调度配置的计划调度时间决定。举例如下: 如果当前节点为日调度节点,并且设置计划调度时间为01:00,则小时的参数取值为01。 如果当前节点为小时调度节点,并且设置计划调度时间为00:00~23:59,每小时调度一次,则:第一个小时实例计划时间为0点,小时的参数取值为00,第二个小时实例计划时间为1点,小时的参数取值为01,以此类推。
  • 业务日期参数 业务日期是指在调度时间内,任务预期调度运行时间的前一天(即昨天)。例如,调度日期为2023年1月1日,那么业务日期就是2022年12月31日。该参数是通过yyyy、yy、mm和dd自定义组合而生成的时间参数,其格式可自定义。例如,${yyyy}、${yyyymm}、${yyyymmdd}和${yyyy-mm-dd}等。 yyyy:表示4位的年份,取值为业务日期的年份。 yy:表示2位的年份,取值为业务日期的年份后两位。 mm:表示月份,取值为业务日期的月份。 dd:表示天,取值为业务日期的天。 取N年前、N月前、N天前的时间数据请参考表1,参数只能精确到年月日,不支持小时、分钟、秒的写法。 表1 业务日期参数获取说明 业务日期场景 获取方法 前/后N年 ${yyyy±N} 前/后N月 ${yyyymm±N} 前/后N周 ${yyyymmdd±7*N} 前/后N天 ${yyyymmdd±N} 前/后N年(yy格式) ${yy±N}
  • 参考:创建委托 登录IAM服务控制台。 选择“委托”,单击“创建委托”。 设置“委托名称”。例如:DGC_agency。 在创建委托页面,委托类型选择“云服务”,云服务选择“数据湖治理中心DGC”,将操作权限委托给DataArts Studio,让DataArts Studio以您的身份使用其他云服务,代替您进行一些资源运维工作。 图3 创建委托 单击“完成”,创建完成。界面提示“是否立即为当前创建的委托进行授权?”,单击“立即授权”,进入授权页面。 在授权页面中搜索“Tenant Administrator”策略,勾选“Tenant Administrator”策略并单击“下一步”。 因Tenant Administrator策略具有除 统一身份认证 服务IAM外,其他所有服务的所有执行权限。所以给委托服务DataArts Studio配置Tenant Administrator,可访问周边所有服务。 若您想达到对权限较小化的安全管控要求,Tenant Administrator可不配置,仅配置OBS OperateAccess权限(因作业执行过程中,需要往OBS写执行日志信息,因此需要添加 OBS OperateAccess权限)。然后再根据作业中的节点类型,配置不同的委托权限。例如某作业仅包含Import GES节点,可配置GES Administrator权限和OBS OperateAccess权限即可。详细方案请参考参考:配置委托权限。 图4 配置权限 单击“确定”完成委托创建。
  • 参考:配置委托权限 将账号的操作权限委托给DataArts Studio服务后,需要配置委托身份的权限,才可与其他服务进行交互。 为实现对权限较小化的安全管控要求,可根据作业中的节点类型,以服务为粒度,参见表1配置相应的服务Admin权限。 也可精确到具体服务的操作、资源以及请求条件等。根据作业中的节点类型,以对应服务API接口为粒度进行权限拆分,满足企业对权限最小化的安全管控要求。参见表2进行配置。例如包含Import GES节点的作业,您只需要创建自定义策略,并勾选ges:graph:getDetail(查看图详情),ges:jobs:getDetail(查询任务状态),ges:graph:access(使用图)这三个授权项即可。 当满足如下条件之一时,MRS集群才支持委托方式提交作业。 非安全集群。 安全集群,集群版本大于 2.1.0,并且安装了MRS 2.1.0.1及以上版本的补丁。 当MRS集群不支持委托方式提交作业时,如下节点相关作业不能配置委托。 MRS相关的节点(MRS Presto SQL、MRS Spark、MRS Spark Python、MRS Flink Job、 MRS MapReduce),以及通过API方式连接的(MRS Spark SQL、MRS Hive SQL)节点。 配置服务级Admin权限 因作业执行过程中,需要往OBS写执行日志信息,因此粗粒度授权时,所有作业都需要添加OBS OperateAccess权限。 表1 配置相关节点的admin权限 节点名称 系统权限 权限描述 CDM Job、DIS Stream、DIS Dump、DIS Client DAYU Administrator 数据治理中心 服务的所有执行权限。 Import GES GES Administrator 图引擎服务的所有执行权限。该角色有依赖,需要在同项目中勾选依赖的角色:Tenant Guest、Server Administrator。 MRS Presto SQL、MRS Spark、MRS Spark Python、MRS Flink Job、 MRS MapReduce MRS Spark SQL、MRS Hive SQL(通过MRS API方式连接MRS集群的) MRS Administrator MRS Fullaccess KMS Administrator MRS Administrator:RBAC策略下 MapReduce服务 的所有执行权限。该角色有依赖,需要在同项目中勾选依赖的角色:Tenant Guest、Server Administrator。 MRS Fullaccess:细粒度策略下MRS管理员权限,拥有该权限的用户可以拥有MRS所有权限。 KMS Administrator: 数据加密 服务加密密钥的管理员权限。 MRS Spark SQL、MRS Hive SQL、MRS Kafka、Kafka Client(通过代理方式连接集群) DAYU Administrator KMS Administrator DAYU Administrator: 数据治理 中心服务的所有执行权限。 KMS Administrator:数据加密服务加密密钥的管理员权限。 DLI Flink Job、DLI SQL、DLI Spark DLI Service Admin 数据湖探索的所有执行权限。 DWS SQL、Shell、RDS SQL(通过代理方式连接数据源) DAYU Administrator KMS Administrator DAYU Administrator:数据治理中心服务的所有执行权限。 KMS Administrator:数据加密服务加密密钥的管理员权限。 CSS DAYU Administrator Elasticsearch Administrator DAYU Administrator:数据治理中心服务的所有执行权限。 Elasticsearch Administrator: 云搜索服务 的所有执行权限。该角色有依赖,需要在同项目中勾选依赖的角色:Tenant Guest、Server Administrator。 Create OBS、Delete OBS、OBS Manager OBS OperateAccess 查看桶、上传对象、获取对象、删除对象、获取对象ACL等对象基本操作权限 SMN SMN Administrator 消息通知服务的所有执行权限。 配置细粒度权限(根据各服务支持的授权项,创建自定义策略) 创建自定义策略的详细操作请参见创建自定义策略。 作业执行过程中,需要向OBS中写入执行日志。当采取精细化授权方式时,任何类型的作业均需要添加OBS的如下授权项: obs:bucket:GetBucketLocation obs:object:GetObject obs:bucket:CreateBucket obs:object:PutObject obs:bucket:ListAllMyBuckets obs:bucket:ListBucket CDM Job、DIS Stream、DIS Dump、DIS Client节点隶属于DataArts Studio模块,DataArts Studio不支持细粒度授权。因此包含这几类节点的作业,给服务配置权限仅支持DataArts Studio Administarator。 CSS不支持细粒度授权,且需要通过代理执行。因此包含这类节点的作业,需要配置DataArts Studio Administarator和Elasticsearch Administrator权限。 SMN不支持细粒度授权,因此包含这类节点的作业,需要配置SMN Administarator权限。 表2 自定义策略 节点名称 授权项 Import GES ges:graph:access ges:graph:getDetail ges:jobs:getDetail MRS Presto SQL、MRS Spark、MRS Spark Python、MRS Flink Job、 MRS MapReduce MRS Spark SQL、MRS Hive SQL(通过MRS API方式连接MRS集群的) mrs:job:delete mrs:job:stop mrs:job:submit mrs:cluster:get mrs:cluster:list mrs:job:get mrs:job:list kms:dek:crypto kms:cmk:get MRS Spark SQL、MRS Hive SQL、MRS Kafka、Kafka Client(通过代理方式连接集群) kms:dek:crypto kms:cmk:get DataArts Studio Administarator(角色) DLI Flink Job、DLI SQL、DLI Spark dli:jobs:get dli:jobs:update dli:jobs:create dli:queue:submit_job dli:jobs:list dli:jobs:list_all DWS SQL、Shell、RDS SQL(通过代理方式连接数据源) kms:dek:crypto kms:cmk:get DataArts Studio Administarator(角色) Create OBS、Delete OBS、OBS Manager obs:bucket:GetBucketLocation obs:bucket:ListBucketVersions obs:object:GetObject obs:bucket:CreateBucket obs:bucket:DeleteBucket obs:object:DeleteObject obs:object:PutObject obs:bucket:ListAllMyBuckets obs:bucket:ListBucket
  • 调度身份的分类 调度身份分为委托和IAM账户两大类。 委托:由于云各服务之间存在业务交互关系,一些云服务需要与其他云服务协同工作,需要您创建云服务委托,将操作权限委托给这些服务,让这些服务以您的身份使用其他云服务,代替您进行一些资源运维工作。 委托可以分为: 公共委托:工作空间级别的全局委托。适用于该空间内的所有作业。配置公共委托请参考配置公共委托。 作业委托:适用于单个作业级别。配置作业委托请参考配置作业委托。 IAM账号:通过用户组统一配置,权限管理相对于委托来说,流程简便;并且使用IAM账号的兼容性更好,可支持MRS相关的节点(MRS Presto SQL、MRS Spark、MRS Spark Python、MRS Flink Job、 MRS MapReduce),通过直连方式的(MRS Spark SQL、MRS Hive SQL)节点,以及目标端为DWS的ETL Job节点,解决部分MRS集群和部分ETL Job节点不支持委托方式提交作业的问题。 IAM账户可分为: 公共IAM账户:工作空间级别的全局IAM账户。适用于该空间内的所有作业。配置公共IAM账户请参考配置公共IAM账号。 执行用户:作业级别的IAM账户,适用于单个作业级别。配置执行用户请参考配置执行用户。 配置执行用户调度功能当前需申请白名单后才能使用。如需使用该特性,请联系客服或技术支持人员。
  • 方法 表1 方法说明 方法 说明 示例 boolean isExistOBSPath(String obsPath) 判断OBS文件或目录(目录请以“/”结尾)是否存在,存在返回true,不存在返回false。 判断OBS目录是否存在,目录请以“/”结尾,EL表达式如下: #{OBSUtil.isExistOBSPath("obs://test/jobs/")} 判断OBS文件是否存在,EL表达式如下: #{OBSUtil.isExistOBSPath("obs://test/jobs/job.log")}
  • 数据架构使用流程 DataArts Studio数据架构的流程如下: 图1 数据架构流程 准备工作: 添加审核人:在数据架构中,业务流程中的步骤都需要经过审批,因此,需要先添加审核人。只有工作空间管理员角色的用户才具有添加审核人的权限。 管理配置中心:数据架构中提供了丰富的自定义选项,统一通过配置中心提供,您需要根据自己的业务需要进行自定义配置。 数据调研:基于现有业务数据、行业现状进行数据调查、需求梳理、业务调研,输出企业业务流程以及数据主题划分。 主题设计:通过分层架构表达对数据的分类和定义,帮助厘清数据资产,明确业务领域和业务对象的关联关系。 主题域分组:基于业务场景对主题域进行分组。 主题域:互不重叠数据的高层面的数据分类,用于管理其下一级的业务对象。 业务对象:指企业运作和管理中不可缺少的重要人、事、物信息。 流程设计:针对流程的一个结构化的整体框架,描述了企业流程的分类、层级以及边界、范围、输入/输出关系等,反映了企业的商业模式及业务特点。 数仓规划:对数仓分层以及数仓建模进行统一管理。支持用户自定义数仓分层。 标准设计:新建码表&数据标准。 新建码表:通常只包括一系列允许的值和附加文本描述,与数据标准关联用于生成值域校验质量监控。 新建数据标准:用于描述公司层面需共同遵守的属性层数据含义和业务规则。其描述了公司层面对某个数据的共同理解,这些理解一旦确定下来,就应作为企业层面的标准在企业内被共同遵守。 模型设计:应用逻辑模型、关系建模、维度建模和数据集市的方法,进行分层建模。 逻辑模型:用于创建逻辑模型以及逻辑模型的修改和删除,转化为物理模型。同时,可以对逻辑实体进行创建及发布,进行逆向数据库等操作。 关系建模:基于关系建模,新建SDI层和DWI层两个模型。 SDI:Source Data Integration,又称贴源数据层。SDI是源系统数据的简单落地。 DWI:Data Warehouse Integration,又称数据整合层。DWI整合多个源系统数据,对源系统进来的数据进行整合、清洗,并基于三范式进行关系建模。 维度建模:基于维度建模,新建DWR层模型并发布维度和事实表。 DWR:Data Warehouse Report,又称数据报告层。DWR基于多维模型,和DWI层数据粒度保持一致。 维度:维度是用于观察和分析业务数据的视角,支撑对数据进行汇聚、钻取、切片分析,用于SQL中的GROUP BY条件。 事实表:归属于某个业务过程的事实逻辑表,可以丰富具体业务过程所对应事务的详细信息。 数据集市:新建DM层并发布汇总表。 DM (Data Mart):又称数据集市。DM面向展现层,数据有多级汇总。 汇总表:汇总表是由一个特定的分析对象(如会员)及其相关的统计指标组成的。组成一个汇总逻辑表的统计指标都具有相同的统计粒度(如会员),汇总逻辑表面向用户提供了以统计粒度(如会员)为主题的所有统计数据(如会员主题集市)。 指标设计:新建业务指标和技术指标,技术指标又分为原子指标、衍生指标和复合指标。 业务指标:指标一般由指标名称和指标数值两部分组成,指标名称及其涵义体现了指标质的规定性和量的规定性两个方面的特点,指标数值反映了指标在具体时间、地点、条件下的数量表现。 业务指标用于指导技术指标,而技术指标是对业务指标的具体实现。 原子指标:原子指标中的度量和属性来源于多维模型中的维度表和事实表,与多维模型所属的业务对象保持一致,与多维模型中的最细数据粒度保持一致。 原子指标中仅含有唯一度量,所含其它所有与该度量、该业务对象相关的属性,旨在用于支撑指标的敏捷自助消费。 衍生指标:是原子指标通过添加限定、维度卷积而成,限定、维度均来源于原子指标关联表的属性。 复合指标:由一个或多个衍生指标叠加计算而成,其中的维度、限定均继承于衍生指标。 注意,不能脱离衍生指标、维度和限定的范围,去产生新的维度和限定。 父主题: 数据架构
  • 通过逆向数据库导入逻辑实体 通过逆向数据库,您可以从其他数据源中将一个或多个已创建的数据库表导入到逻辑实体目录中,使其变成逻辑实体。 在数据架构控制台,单击左侧导航树中的“逻辑建模”,进入后选择“逻辑模型”进入逻辑模型页面,选择一个逻辑模型进入逻辑实体列表页面。 在逻辑实体列表上方,单击“逆向数据库”。 在“逆向数据库”对话框中,配置如下参数,然后单击“确定”。 表7 逆向数据库配置 参数名称 说明 *所属主题 在下拉列表中选择所属主题。 *数据连接类型 在下拉列表中将显示逆向数据库支持的数据连接类型,请选择所需要的数据连接类型。 *数据连接 选择数据连接。 如需从其他数据源逆向数据库到逻辑实体目录中,需要先在DataArts Studio管理中心创建一个数据连接,以便连接数据源。创建数据连接的操作,请参见配置DataArts Studio数据连接参数。 *数据库 选择数据库。 *Schema 下拉选择Schema。该参数仅DWS和POSTGRESQL模型的表有效。 队列 DLI队列。仅当“数据连接类型”选择“DLI”时,该参数有效。 更新已有表 如果从其他数据源逆向过来的表,在逻辑实体中已存在同名的表,选择是否更新已有的逻辑实体。 名称来源 逆向后表名称/字段名称的来源,可以是描述或者是相应英文名,如表/字段未指定描述则固定使用英文名。 来自描述 来自英文名称 说明: 进行逆向数据库配置时,如果逆向后表中文名称/字段中文名称的来源选择“来自描述”,则用中文名在进行描述时,表的字段注释不能重复。 *数据表 选择全部或部分需导入的数据表。 选择部分搜索时,支持通过多个表进行筛选,多表之间用英文分号进行分隔。搜索名称最大不超过2000字符。每次最多返回20条数据。 图10 逆向配置 逆向数据库的结果会在“上次逆向”页面中显示。如果逆向成功,单击“关闭”。如果逆向失败,您可以查看失败原因,问题解决后,选中失败的表,然后单击“重新逆向”进行重试。 图11 逆向结果
  • 导入逻辑实体 导入EXCEL 单击逻辑实体列表上方“导入”中的“导入EXCE”。在“导入表”对话框中,选择“导入配置”页签,单击“下载关系建模导入模板”。 图12 导入EXCEL 下载关系建模导入模板后,编辑完成后保存至本地。 选择是否更新已有数据。 如果系统中已有的编码和模板中的编码相同,系统则认为是数据重复。 不更新:当数据重复时,不会替换系统中原有的数据。 更新:当数据重复时 系统中的原有数据为草稿状态,则会覆盖生成新的草稿数据。 系统中的原有数据为发布状态,则会生成下展数据。 单击“添加文件”,选择编辑完成的导入模板。 单击“上传文件”,上传完成后,自动跳转到“上次导入”页签,查看已导入的数据。 单击“关闭”退出该页面。 导入LDM 导入LDM模型时,请先选择一个主题。不选择则无法导入。 当前支持导入逻辑模型。 请准备好需要导入的.ldm格式的逻辑模型。该逻辑模型是从第三方系统Power Designer导出来的。 导入的LDM模型支持的版本:16.x 单击逻辑实体列表上方“导入”中的“导入LDM”。在“导入表”对话框中,选择“导入配置”页签。 图13 导入LDM 选择是否更新已有数据。 不更新:当数据重复时,不会替换系统中原有的数据。 更新:当数据重复时 系统中的原有数据为草稿状态,则会覆盖生成新的草稿数据。 系统中的原有数据为发布状态,则会生成下展数据。 单击“添加文件”,选择提前准备好的.ldm格式的逻辑模型。 单击“上传文件”,上传完成后,自动跳转到“上次导入”页签,查看已导入的数据。 单击“关闭”退出该页面。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全