目录

1. 在数据库连接中使用集群

2. 创建数据库分区schemas

3. 启用数据库分区

4. 例子

(1)将三个mysql实例的数据导入到另一个mysql实例

(2)将一个mysql实例的数据分发到三个mysql实例

(3)将三个mysql实例的数据导入到另三个mysql实例

(4)将三个mysql实例的数据导入相同实例的不同表中


本文介绍Kettle 8.3中数据库分区的使用。

1. 在数据库连接中使用集群

在Kettle的数据库连接对话框中,可定义数据库分区,如图1所示。

图1

在“集群”标签,勾选“使用集群”,然后定义三个分区。这里的分区实际指的是数据库实例,需要指定自定义的分区ID,数据库实例的主机名(IP)、端口、数据库名、用户名和密码。定义分区的目的是为了从某一个分区甚至某一个物理数据库读取和写入数据。一旦在数据库连接里面定义了数据库分区,就可以基于这个信息创建了一个分区schema。

在“一般”标签,只要指定连接名称、连接类型和连接方式,在“设置”中都可以为空,如图2所示。Kettle假定所有的分区都是同一数据库类型和连接类型。

图2

定义好分区后点击“测试”,结果如图3所示。

图3

2. 创建数据库分区schemas

在“主对象树”的“数据库分区schemas”上点右键“新建”,在弹出窗口中输入“分区schema名称”,然后点击“导入分区”按钮,如图4所示。

图4

选择上一步定义的数据库连接 mysql_only_shared,点“确定”按钮后,如图5所示。

图5

此时已经导入了上一步定义的三个数据库分区。点击“OK”保存。这样就定义了一个名为shared_source的数据库分区schema。再用同样的方法定义一个名为shared_target的数据库分区schema,所含分区也从mysql_only_shared导入。

至此,我们已经定义了一个包含三个分区的数据库连接,并将分区信息导入到两个数据库分区schema,如图6所示。

图6

现在可以在任何步骤里面应用这两个数据库分区schema(就是说使用这个分区的数据库连接)。Kettle将为每个数据库分区产生一个步骤复制,并且它将连接物理数据库。

3. 启用数据库分区

点击步骤右键,选择“分区...”菜单项,如图7所示。

图7

此时会弹出一个对话框,选择使用哪个分区方法,如图8所示。

图8

分区方法可以是下面的一种:

  • None:不使用分区,标准的“Distribute rows”(轮询)或“Copy rows”(复制)规则被应用。
  • Mirror to all partitions:使用已定义的数据库分区schema中的所有分区。
  • Remainder of division:Kettle标准的分区方法。通过分区编号除以分区数目,产生的余数被用来决定记录行将发往哪个分区。例如在一个记录行里,如果有 “73” 标识的用户身份,而且有3个分区定义,这样这个记录行属于分区1,编号30属于分区0,编号14属于分区2。需要指定基于分区的字段

选择“Mirror to all partitions”,在弹出窗口中选择已定义的分区schema,如图9所示。

图9

经此一番设置后,该步骤就将以分区方式执行,如图10所示。

图10

4. 例子

(1)将三个mysql实例的数据导入到另一个mysql实例

转换如图11所示。

图11

表输入步骤如图12所示。

图12

该步骤虽然连接的是mysql_only_shared。因为是按分区方式执行,实际读取的是三个分区的数据。三个分区的t1表数据如图13所示。

图13

表输出步骤连接的是172.16.1.105的test.t4表,如图14所示。

图14

该转换执行的逻辑为:
db1.t1 + db2.t1 + db3.t1 -> db4.t4

转换执行后,172.16.1.105的test.t4表数据如图15所示。

图15

如果将图12中的数据库连接改为mysql_172.16.1.105,连接172.16.1.105的test.t1表。mysql_172.16.1.105本身没有设置“使用集群”,则转换将从172.16.1.105取数据,但依然为每个分区复制一份步骤,其结果等同于3线程的复制分发。转换执行后,172.16.1.105的test.t4表数据如图16所示。

图16

(2)将一个mysql实例的数据分发到三个mysql实例

转换如图17所示。

图17

表输入步骤如图18所示。

图18

该步骤连接172.16.1.105的test.t4表。

表输出步骤如图19所示。

图19

该步骤虽然连接的是mysql_only_shared。因为是按分区方式执行,会向三个分区中的t2表输出数据。

该转换执行的逻辑为:
db4.t4 -> db1.t2
db4.t4 -> db2.t2
db4.t4 -> db3.t2

转换执行后,三个分区的test.t2表数据如图20所示。

图20

(3)将三个mysql实例的数据导入到另三个mysql实例

转换如图21所示。

图21

输入步骤使用的是shared_source分区schema,而输出步骤使用的是shared_target分区schema。

表输入步骤如图22所示。

图22

该步骤连接三个分区的test.t1表。

表输出步骤如图23所示。

图23

向三个分区的test.t2表输出数据。

该转换执行的逻辑为:
db1.t1 + db2.t1 + db3.t1 -> db4.t2
db1.t1 + db2.t1 + db3.t1 -> db5.t2
db1.t1 + db2.t1 + db3.t1 -> db6.t2

转换执行后,三个分区的test.t2表数据如图20所示。虽然最终结果与上一个例子相同,但执行逻辑是不同的。

(4)将三个mysql实例的数据导入相同实例的不同表中

转换如图24所示。

图24

与前一个例子只有一点区别:输入步骤与输出步骤使用的是同一个分区schema(shared_source)。

该转换执行的逻辑为:
db1.t1 -> db1.t2
db2.t1 -> db2.t2
db3.t1 -> db3.t2

转换执行后,三个分区的test.t2表数据如图25所示。

图25

在数据库连接中定义分区时需要注意一点,分区ID应该唯一,如果多个分区ID相同,则所有具有相同ID的分区都会连接到第一个具有该ID的分区。例如,我们把mysql_only_shared的分区定义改为如图26所示:

图26

103与104两个分区的分区ID都是2。然后重新导入shared_source,并再次执行图24的转换。三个分区的test.t2表数据如图27所示。

图27

可以看到,103的t2表插入了两条数据,而104没有执行任何操作(并没有truncate表)。

Kettle数据库连接中的集群与分片相关推荐

  1. mongodb集群与分片的配置说明

    mongodb集群与分片的配置说明 Shardingcluster介绍: 这是一种可以水平扩展的模式,在数据量很大时特给力,实际大规模应用一般会采用这种架构去构建monodb系统. 系统分为需要三种角 ...

  2. mysql 集群怎么卸载节点_Redis集群重新分片(新增/移除节点)【理论】

    Redis集群重新分片(新增/移除节点)[理论] 发布时间:2020-06-25 10:16:16 来源:51CTO 阅读:6915 作者:张德帅ya 栏目:数据库 redis集群重新分片原理:(增加 ...

  3. Elasticsearch集群索引分片未分配unassigned导致集群状态红色red异常若干问题解决记录

    一.背景 今天收到告警短信发现某个业务系统几台服务器的日志收集服务filebeat均已下线,把Filebeat都重启之后,准备到Kibana查阅业务系统的日志,检索异常条目,发现从凌晨开始的日志条目都 ...

  4. DistCp迁移Hive数据过程中源集群增加删除文件等场景测试

    1 概述   由于在数据迁移过程中,上层任务仍在运行,会出现源集群新增文件及删除文件的情况,因此进行测试 2 需要同步的数据文件说明   源集群:192.168.40.100:8020,目标集群:19 ...

  5. Hadoop架构中各个集群在开发中的作用

    学习大数据,如果只是零零散散地学习各个模块,就会深陷其中,很难深入了解hadoop架构中各个集群的作用.那么在实际开发中,究竟是怎样的一个流程呢?先看下面一张流程图: 接下来就用一些大白话,来讲解每个 ...

  6. 17-kubernetes集群中ceph集群使用

    <文章感谢 xingdian > 文章目录 kubernetes集群中ceph集群使用 一:CephFS 创建和使用 1.filesystem 配置 2.查看资源配置 3.创建相对应的st ...

  7. 16-kubernetes集群中ceph集群使用

    <文章感谢 xingdian > 文章目录 kubernetes集群中ceph集群使用 一:块设备创建和使用 1.storageclass 配置 2.查看配置结果 3.kubernetes ...

  8. K8s——kubernetes集群中ceph集群使用【下】

    kubernetes集群中ceph集群使用 一:CephFS 创建和使用 CephFS 允许用户挂载一个兼容posix的共享目录到多个主机,该存储和NFS共享存储以及CIFS共享目录相似 1.file ...

  9. K8s——kubernetes集群中ceph集群使用【上】

    kubernetes集群中ceph集群使用 块设备创建和使用 Ceph 能够为 pod 提供裸的块设备卷,定义在Ceph数据冗余级别的一个池中 1.storageclass 配置 storagecla ...

  10. spark-测试模式-在windows中连接虚拟机中cdh集群的hdfs和hive和linux单机模式

    需求1:在windows的idea中连接虚拟机cdh集群的hdfs和hive 在windows中的idea中直接把spark程序的master设为local,然后连接虚拟机中的hdfs和hive.这是 ...

最新文章

  1. 一个简单的程序来使用WiredTiger 存储引擎
  2. 最短路径·三:SPFA算法 HihoCoder - 1093 (spfa无向图)
  3. springmvc 文件上传和拦截器
  4. axios中POST请求变成OPTIONS处理
  5. Spring Boot的Spring Data JPA示例
  6. 原型化系统---失物招领APP
  7. pdnovel.php_Pdnovel 在線閱讀體驗
  8. 数字后端基础技能之:CTS(中篇)
  9. 如何编译Linux内核
  10. linux查看php执行用户,在浏览器中打开php文件时,是Linux中的哪个用户执行的?...
  11. python机器学习
  12. Tensorflow 释放内存
  13. 02-SpringBoot集成MinIo
  14. Windows 批量添加删除路由资源性能优化
  15. abaqus linux命令,linux下安装abaqus
  16. 开源PLM软件Aras详解一 安装
  17. css 居中问题的总结
  18. linux获取完整的man(manpages)linux参考手册/中文man的下载和使用/获取buildin 命令的完整帮助文档/多种man手册/man着色colorful man
  19. coreldraw x8段落_CorelDRAWx8调整字间距的方法
  20. 许奔创新社-第26问:专家们创新时为何需要外行来指手画脚?

热门文章

  1. “为什么要选择Startups?”--GitCafe邀您回顾第一期企业联合招聘
  2. JDK1.8新特性(八):还在重复写空指针检查代码?赶紧使用Optional吧!
  3. 蛇行字符串解题代码C++
  4. win7计算机如何进入管理员权限,win7电脑怎样获得管理员权限
  5. puts 和 printf %s
  6. 开发者硬核:Web3 DApp 最佳编程实践指南
  7. Vmware请选择您要安装的macOS的磁盘
  8. CET eve 看星星
  9. 但行好事莫问前程 学习笔记
  10. java中的subtract_【java】Java.math.BigDecimal.subtract()方法实例