干货|快速实现数据导入和简单的DCS实现

优采云 发布时间: 2020-08-06 23:27

  干货|快速实现数据导入和简单的DCS实现

  原文: 赵奇京东云开发者社区4月18日

  

  对于大多数用户而言,使用云计算大数据服务时,他们必须面对的第一个问题是如何快速将现有库存数据导入大数据仓库. 本文将演示如何基于JD云数据计算服务平台将数据简单快速地导入到数据计算服务中.

  我们通常所说的大数据平台主要包括三个部分: 与数据相关的产品和技术,数据资产和数据管理. JD云数据计算服务(DCS)是云上的一种完全托管的低成本数据仓库服务. 通过数据工厂,可以轻松实现云上各种数据源(包括对象存储,云数据库,数据仓库等)之间以及本地数据源和云数据源之间的数据同步,并实现多源数据分析和管理.

  在数据工厂服务中,您可以创建一个同步任务来移动数据,并根据指定的调度策略(每天,每周和每月)运行它. 此模块提供任务监视和警报功能. 用户可以通过详细的日志和任务执行的警报历史轻松识别问题. 同时,它提供了完全托管的工作流服务,并支持图形设计数据分析. 通过工作流任务的方式实现数据处理和相互依赖,帮助用户快速构建数据处理和分析作业并定期执行.

  以下将以MySQL数据库为例,说明如何使用JD Cloud Data Factory在DTS数据库之间进行数据采集和数据同步. Data Factory支持常见的RDS数据库,例如MySQL,SQLServer,Oracle,DB2和NoSQL数据库,以及来自OSS,FTP站点和Elastic Search的数据库.

  下图显示了Data Factory支持的数据源类型:

  

  下面将以MySQL数据库为例,演示如何使用数据工厂进行数据采集,以及如何使用数据工厂作为DTS在两个数据源之间进行数据迁移.

  为了方便测试,我们必须首先创建一个数据库表单并填写测试数据. 为了方便测试,预先创建了一个CentOS 7.4云主机作为模拟客户端来访问数据库.

  首先,核心概念数据集

  数据工厂服务中的数据集引用在同步任务期间需要指定的数据源或数据目标上的不同数据存储实例. 因此,在创建同步任务之前,必须首先连接到数据集. 同一数据集可以是多个同步任务的数据源或数据目的地.

  数据集的连通性

  用户创建数据集连接时,为了检查数据集成服务是否可以成功连接,用户需要根据不同的数据集类型填写相应的值以进行连接验证. 成功的数据集连接是成功完成数据同步任务的前提.

  同步任务

  同步任务是用户使用数据集成服务的最小单位. 每个同步任务都需要用户配置数据源,数据目标和相应的同步策略(例如脏数据处理等).

  工作流程

  工作流通过图形设计任务实现数据处理和相互依赖.

  开始实战1.准备测试数据源

  首先创建一个模拟数据环境. 在此示例中,将JD Cloud的RDS MySQL 8.0数据库服务用作数据源,并且在创建数据库名称时可以将其指定为Testdb. 创建数据库后,您需要打开外部网络来访问数据库. 数据工厂可以通过公共IP或域名访问数据库. 可以在数据库的详细信息页面上找到详细的域名.

  

  要创建MySQL数据库,您可以通过图形界面打开它,并按照提示填写必要的信息,因此在此不再赘述. 需要提醒的是,打开数据库后,默认情况下不允许外部网络访问. 单击打开外部网络访问,并记住默认端口3306.

  

  可以通过图形界面或客户端访问MySQL. 当然,也可以通过其他支持MySQL的图形客户端对其进行访问.

  

  此示例使用CentOS系统作为访问客户端. 如果未安装客户端,则可以使用Yum命令安装MySQL. 成功安装后,您会看到以下提示.

  

1[root@CentOS ~]# yum install mysql

2Loaded plugins: fastestmirror, langpacks

3Loading mirror speeds from cached hostfile

4base                                | 3.6 kB     00:00     

5epel                                | 4.7 kB     00:00     

6extras                              | 3.4 kB     00:00     

7updates                             | 3.4 kB     00:00     

8(1/2): epel/x86_64/updateinfo         | 986 kB   00:00     

9(2/2): epel/x86_64/primary_db         | 6.7 MB   00:00     

10Resolving Dependencies

11--> Running transaction check

12---> Package mariadb.x86_64 1:5.5.60-1.el7_5 will be installed

13--> Processing Dependency: mariadb-libs(x86-64) = 1:5.5.60-1.el7_5 for package: 1:mariadb-5.5.60-1.el7_5.x86_64

14--> Running transaction check

15---> Package mariadb-libs.x86_64 1:5.5.56-2.el7 will be updated

16---> Package mariadb-libs.x86_64 1:5.5.60-1.el7_5 will be an update

17--> Finished Dependency Resolution

18

19Dependencies Resolved

20

21===========================================================

22 Package        Arch     Version              Repository

23                                                      Size

24===========================================================

25Installing:

26 mariadb        x86_64   1:5.5.60-1.el7_5     base   8.9 M

27Updating for dependencies:

28 mariadb-libs   x86_64   1:5.5.60-1.el7_5     base   758 k

29

30Transaction Summary

31===========================================================

32Install  1 Package

33Upgrade             ( 1 Dependent package)

34

35Total download size: 9.6 M

36Is this ok [y/d/N]: y

37Downloading packages:

38Delta RPMs disabled because /usr/bin/applydeltarpm not installed.

39(1/2): mariadb-libs-5.5.60-1.el7_5.x8 | 758 kB   00:00     

40(2/2): mariadb-5.5.60-1.el7_5.x86_64. | 8.9 MB   00:00     

41-----------------------------------------------------------

42Total                          11 MB/s | 9.6 MB  00:00     

43Running transaction check

44Running transaction test

45Transaction test succeeded

46Running transaction

47  Updating   : 1:mariadb-libs-5.5.60-1.el7_5.x86_64    1/3 

48  Installing : 1:mariadb-5.5.60-1.el7_5.x86_64         2/3 

49  Cleanup    : 1:mariadb-libs-5.5.56-2.el7.x86_64      3/3 

50  Verifying  : 1:mariadb-libs-5.5.60-1.el7_5.x86_64    1/3 

51  Verifying  : 1:mariadb-5.5.60-1.el7_5.x86_64         2/3 

52  Verifying  : 1:mariadb-libs-5.5.56-2.el7.x86_64      3/3 

53

54Installed:

55  mariadb.x86_64 1:5.5.60-1.el7_5                          

56

57Dependency Updated:

58  mariadb-libs.x86_64 1:5.5.60-1.el7_5                     

59

60Complete!

  安装后执行MySQL命令以测试是否可以连接到数据库. 客户端访问命令格式为MySQL-h主机地址-u用户名-p用户密码. 主机地址使用MySQL数据库的外部域名. 从连接到数据库到创建表单的详细执行过程如下:

  1. 验证是否可以正常连接到数据库

  

1[root@CentOS ~]# mysql -h mysql-cn-north-1-aed0e558da5e4877.public.jcloud.com -P3306 -umysqlxxx –pPasswordxxx

  如果可以正常连接,则可以打开一个新窗口以创建用于数据库创建和测试数据插入操作的SQL脚本,也可以预先进行创建并将其上传到客户端.

  创建数据表,创建测试数据库和测试表以方便测试. 选择适当的目录以创建SQL脚本文件. 您可以使用vi ctable.sql创建它,也可以使用其他文本编辑工具. 该脚本的内容如下:

  

1[root@CentOS ~]# cat ctable.sql 

2USE testdb;

3DROP TABLE IF EXISTS `sqltest`;

4CREATE TABLE `sqltest` (

5    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,

6    `user_id` varchar(20) NOT NULL DEFAULT '',

7    `vote_num` int(10) unsigned NOT NULL DEFAULT '0',

8    `group_id` int(10) unsigned NOT NULL DEFAULT '0',

9    `status` tinyint(2) unsigned NOT NULL DEFAULT '1',

10    `create_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

11    PRIMARY KEY (`id`),

12    KEY `index_user_id` (`user_id`) USING HASH

13) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

  2. 创建脚本文件以临时生成数据,vi adddb.sql

  

1[root@CentOS ~]# cat adddb.sql

2DELIMITER // -- 修改MySQL delimiter:'//'

3DROP FUNCTION IF EXISTS `rand_string` //

4SET NAMES utf8 //

5CREATE FUNCTION `rand_string` (n INT) RETURNS VARCHAR(255) CHARSET 'utf8'

6BEGIN 

7    DECLARE char_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';

8    DECLARE return_str varchar(255) DEFAULT '';

9    DECLARE i INT DEFAULT 0;

10    WHILE i  source /root/adddb.sql;

  添加100条数据

  

1MySQL [testdb]> call adddb(100);

  通过调整adddb的数量(以增加数量),还可以添加1000,例如adddb(1000).

  

  现在我们已经为数据源提供了测试环境,我们可以开始使用数据工厂进行数据同步.

  第二,使用数据工厂进行源数据采集

  选择大数据和分析的数据工厂菜单. 在连接管理中添加一个连接,如下所示:

  

  建立连接时,建议单击连接测试按钮以首先测试数据库连接. 如果无法连接,请检查域名,端口,用户名和密码是否正确以及数据库是否允许外部网络访问.

  建立数据库连接后,可以开始数据同步. 数据同步任务可以在数据同步中单独设置,也可以通过数据集成选项在工作流中设置. 设置数据集成后,将自动生成数据同步任务.

  

  

  调度策略可以选择手动执行,定期调度和单次操作三种模式,也可以直接选择单次操作.

  

  

  执行完成后,数据将在数据计算服务中同步.

  以上操作可以以工作流的形式实现,连接更复杂的Spark计算脚本.

  

  成功执行后,您可以在运维中心检查执行状态,并在实例列表的工程图布局中看到执行节点变为绿色.

  

  可以通过上述数据同步任务和工作流的建立来实现从数据源的数据获取. 数据采集​​后,大数据服务可以直接用于数据处理. 在“大数据和分析”菜单下选择“数据计算服务管理”. 默认情况下,使用您自己的用户名/ PIN(在这种情况下,用户名是jdc-14)作为实例名称,并建立了默认的HIVE INSTANCE.

  

  在数据库表数据的管理下,您可以看到新创建的数据库MySQLdb和表SQLTest. 单击以输入SQLTest表名称,以查看更多详细的表信息,如图所示.

  

  

  可以根据获取的大数据信息在数据计算服务中执行任务开发. 任务开发可以使用SQL或开发脚本来计算数据.

  

  三,DCS大数据导出

  您可以使用此功能将数据工厂用作简单的DTS工具,以将数据传输到目标数据库. 在此示例中,在JD Cloud上建立了一个MySQL目标数据库,并将SQLTest同步到目标数据库以实现两个数据库之间的数据同步.

  准备或创建新的目标MySQL数据库destmysqldb,并将数据计算服务的MySQLdb同步到目标数据库destmysqldb.

  在“数据工厂”菜单下,选择“连接管理”以创建与destmysqldb的新连接.

  

  创建一个新的同步任务,将数据计算服务的数据同步到destmysqldb数据库,并且任务名称为synctodest. 要选择数据源,必须为大数据选择数据计算服务. 该数据库名为mysqldb,该表名为sqltest. 可以预览表中的数据,以免出错.

  在传输数据之前,请提前在数据库中创建一个空表结构,在本文开头执行ctable.sql以创建表SQLTest,并在插入数据时选择目标表名称.

  

  执行后,您可以在destmysqldb中确认结果,并且可以通过从sqltest中选择count(*)来确认数据已成功导入.

  

  可以确认,数据工厂被用作简单的DTS工具,用于将源数据库数据同步到目标数据库,并且实际战斗成功了!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线