DataArts(原DGC)的工作流程。当然,在企业级使用的时候,一般是一个现成的工作环境,这里只是展示一下。
参 数 | 说 明 |
---|---|
资源地 | 如果需要使用华为云一整套服务,必须确保资源地区均相同,华为云的资源跨区域是不互通的(比如,都选择华北-北京4) |
vpc | DataArts Studio实例中的数据集成CDM集群所属的VPC。VPC即虚拟私有云,是通过逻辑方式进行网络隔离,提供安全、隔离的网络环境。如果DataArts Studio实例或CDM集群需连接云上服务(如DWS、MRS、RDS等),则您需要确保CDM集群与该云服务网络互通。同区域情况下,同虚拟私有云、同子网、同安全组的不同实例默认网络互通,如果同虚拟私有云而子网或安全组不同,还需配置路由规则及安全组规则。 |
安全组 | DataArts Studio实例中的数据集成CDM集群所属的安全组。安全组是一组对弹性云服务器的访问规则的集合,为同一个VPC内具有相同安全保护需求并相互信任的弹性云服务器提供访问策略。如果DataArts Studio实例或CDM集群需连接云上服务(如DWS、MRS、RDS等),则您需要确保CDM集群与该云服务网络互通。同区域情况下,同虚拟私有云、同子网、同安全组的不同实例默认网络互通,如果同虚拟私有云而子网或安全组不同,还需配置路由规则及安全组规则。 |
子网 | DataArts Studio实例中的数据迁移CDM集群所属的子网。通过子网提供与其他网络隔离的、可以独享的网络资源,以提高网络安全。如果DataArts Studio实例或CDM集群需连接云上服务(如DWS、MRS、RDS等),则您需要确保CDM集群与该云服务网络互通。同区域情况下,同虚拟私有云、同子网、同安全组的不同实例默认网络互通,如果同虚拟私有云而子网或安全组不同,还需配置路由规则及安全组规则。 |
对于HDFS和关系型数据库类型的数据源,不方便暴露节点的场景,可选择在源端网络中部署Agent。CDM通过Agent拉取客户内部数据源的数据,但不支持写入数据。
进入CDM主界面,单击左侧导航上的“集群管理”,选择集群后的“作业管理 > Agent管理 > 新建Agent”,根据需求配置Agent相关信息。
这里的vpc、安全组、子网是根据你的cdm
由图可知,创建agent的前提,是需要一个已知的CDM集群,由此可见上述的参数默认就是与自己创建的cdm集群保持一致的。
密钥管理服务(KMS)是一套密钥管理系统, 可以针对云上数据/各端上的加密需求精心设计的密码应用服务,为您的应用提供符合各种要求的密钥服务及极简应用加解密服务,助您轻松使用密钥来加密保护敏感的数据资产。
可直接在华为云工作台中搜索KMS来创建密钥
标签是由您自定义的、用于标识当前实例的键值对,由标签“键”和标签“值”组
成。
当前DataArts Studio实例标签支持的使用场景如下:
● 当拥有大量云资源时,您可以按使用者、维护者或用途等各类维度为云资源(包
括DataArts Studio实例)添加标签,最后您可以在标签管理服务(简称TMS)通
过标签识别、管理多种云资源,使资源管理变得更加轻松。
● 当拥有多个DataArts Studio实例时,您可以按使用者、维护者或用途等各类维度
为各实例添加标签,然后在DataArts Studio实例列表页面,可以通过标签搜索、
识别DataArts Studio实例。
桶(Bucket)是OBS中存储对象的容器。对象存储提供了基于桶和对象的扁平化存储方式,桶中的所有对象都处于同一逻辑层级,去除了文件系统中的多层级树形目录结构。
OBS中桶和对象的关系
每个桶都有自己的存储类别、访问权限、所属区域等属性,用户可以在不同区域创建不同存储类别和访问权限的桶,并配置更多高级属性来满足不同场景的存储诉求。
对象存储服务设置有三类存储类别,分别为:标准存储、低频访问存储、归档存储,从而满足客户业务对存储性能、成本的不同诉求。创建桶时可以指定桶的存储类别,桶的存储类别可以修改。
在OBS中,桶名必须是全局唯一的且不能修改,即用户创建的桶不能与自己已创建的其他桶名称相同,也不能与其他用户创建的桶名称相同。桶所属的区域在创建后也不能修改。每个桶在创建时都会生成默认的桶ACL(Access Control List),桶ACL列表的每项包含了对被授权用户授予什么样的权限,如读取权限、写入权限等。用户只有对桶有相应的权限,才可以对桶进行操作,如创建、删除、显示、设置桶ACL等。
一个账号可创建100个桶。每个桶中存放的对象的数量和大小总和没有限制,用户不需要考虑数据的可扩展性。
由于OBS是基于REST风格HTTP和HTTPS协议的服务,您可以通过URL(Uniform Resource Locator)来定位资源。
一般在企业级别的关系来说,obs桶的权限不一定会划分出来,这里只是做介绍,实际生产开发中根据权限划分需求来决定。
创建obs直接在控制台中搜索obs即可,根据需求来创建所需的obs。
系统将默认为其创建一个默认的工作空间“default”,并赋予该用户管理员角色,您可以使用默认的工作空间,也可以自己创建一个新的工作空间。
DataArts Studio实例内的工作空间作为成员管理、角色和权限分配的基本单元,包含了完整的DataArts Studio功能,工作空间的划分通常按照分子公司(如集团、子公司、部门等)、业务领域(如采购、生产、销售等)或者实施环境(如开发、测试、生产等),没有特定的划分要求。划分规则随意。
工作空间从系统层面为管理者提供对使用DataArts Studio的用户(成员)权限、资源、DataArts Studio底层计算引擎配置的管理能力。为实现多角色协同开发,管理员可将相关用户加入到工作空间,并赋予DataArts Studio预设的项目管理员、开发者、运维者、访客等角色,其他帐号也只有在加入工作空间并被分配权限后,才可具备管理中心、数据集成、数据架构、数据开发、数据目录、数据质量、数据服务、数据安全模块系列的操作权限。
存储作业日志和脏数据依赖于OBS服务;如无OBS服务,则不支持作业日志和脏数据存储。obs桶的创建见上面的说明。
查看工作空间配额使用量
编辑工作空间
应用管理与运维平台(ServiceStage)是面向企业的应用管理与运维平台,提供应用发布、部署、监控与运维等一站式解决方案。支持Java、Go、Node.js、Docker、Tomcat等运行环境。支持Apache ServiceComb Java Chassis(Java Chassis)、Spring Cloud、Dubbo、Mesher服务网格等微服务应用,让企业应用上云更简单。
ServiceStage主要包含如下能力:
数据中台有53个微服务需要部署,部署微服务有专业的团队完成,我们只需要对微服务进行调试不报错即可。
数据中台的微服务主要是为了支持看板、标签、报表等一系列产品的API接口服务,来满足对应的数据支撑。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NZClEKg5-1669364024002)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20221118134116312.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-daXReQFd-1669364024004)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20221118134204522.png)]
图示为数据中台的微服务名称(其功能在文件夹中有相应的介绍)
在控制面板中打开,应用管理与运维平台(这个权限和数据中台时划分开的,所以需要问微服务部署人员使用一下其相关账号「冉鹏」)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8jKhBRNy-1669364024007)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20221118134713133.png)]
如果想要连接mysql或者oracle,需要在obs中上传相关的驱动包。直接在控制台搜索obs-进入管理控制台-在已经创建的obs中上传驱动包即可。(不过需要注意的是,obs的权限由于种种原因,不一定会给中台展现出来,需要在cdm中配置相关驱动。)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5PXLftzh-1669364024011)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20221118140028540.png)]
在cdm集群中->连接管理->驱动管理中,可以看到这些驱动管理,在这里上传相关驱动即可(内置驱动可能会显示驱动连接失败\驱动不存在等问题。)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q7nuTBuO-1669364024013)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20221118140749345.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gb3F8n1w-1669364024014)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20221118141515951.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-st3IGcbm-1669364024016)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20221118141806627.png)]
值得注意的是,迁移的时候不能改变名字,如果需要改表名,需要在作业名称加上名字前缀。所以这个局限性就在于只能按类别去迁移表名。比如一次性将cuc的表迁移过来。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q1LzFVr7-1669364024017)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20221118142046877.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Lb7CzdU-1669364024017)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20221118142214834.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wpqifz1A-1669364024018)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20221118142308641.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dTcpX1Wn-1669364024019)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20221118142456186.png)]
至此,离线数据迁移任务已经完成了,下面来配置实时增量数据的接入讲解。
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
/**
* @Description:oracle的sql语句转换成mysql的sql语句
* @作者:mateo
* @date 2022-11-15
*/
public class OracleSqlConvert4MysqlSqlTool {
public static void main(String[] args) throws IOException {
String oriPath = "D:\\oracle_path.sql";//oracle sql文件地址
String desPath = "D:\\mysql_path.sql";//mysql sql程序生成目标地址
BufferedReader reader = null;
PrintWriter writer = null;
try {
reader = new BufferedReader(new InputStreamReader(new FileInputStream(oriPath),"gbk"));
writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(desPath),"utf-8"));
String l;
while ((l = reader.readLine()) != null) {
if (l.startsWith("prompt")) continue;
if (l.startsWith("set"))continue;
if (l.startsWith("values")) {
l = l.replace("dd-mm-yyyy hh24:mi:ss.ff", "%d-%m-%Y %H:%i:%s.%f");
l = l.replace("dd-mm-yyyy hh24:mi:ss", "%d-%m-%Y %H:%i:%s");
l = l.replace("03-01-0001", "03-01-1970");
l = l.replace("01-01-1970", "03-01-1970");
l = l.replace("to_date", "str_to_date");
l = l.replace("to_timestamp", "str_to_date");
l = l.replace("' || chr(10) || '", " ");
l = l.replace("' || chr(13) || '", " ");
}
writer.println(l);
}
} finally {
if (reader != null) {
reader.close();
}
if (writer != null) {
writer.close();
}
}
}
}