暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

「更易用的OceanBase」|如何使用 Data Integration(Kettle) 连接 OceanBase 进行 ETL 开发

原创 阿福Chris 2022-11-25
2672

今天给大家分享一篇 Data Integration 连接 OceanBase 的文章。希望对正在使用 Data Integration 做 ETL 开发的同学有所帮助。

1. Data Integration 是什么?

Data Integration 也叫 Kettle,大家可能对 Kettle 这个名字更熟悉吧,尤其是做数据仓库或者 DBA 的同学。Kettle 之前是 Pentaho 的产品,若干年前被日立收购了,当然这款流行的 ETL 产品一直开源给大家免费使用。

Kettle 使用 Java 开发,所以跨平台使用起来比较方便,另外 Java 生态特别强大,所以 Kettle 的功能非常全,几乎可以连接任何数据库、文件、大数据平台、FTP等等。并且提供图形化可拖拽的界面,方便大家使用,大家即使不了解 Java 语言开发,也可以很好的使用 Kettle 进行 ETL 流程开发。下面是一个简单的 Kettle 开发界面,供大家参考:


2. 配置 Kettle 中的 OceanBase 数据源

在 Kettle 中配置 OceanBase 数据源,有两种方法,因为 OceanBase 对 MySQL 协议兼容很好,所以第一种方法可以采用 MySQL 驱动,第二种方法是采用 OceanBase 官方提供的驱动,当然我还是建议大家有条件的话,采用 OceanBase 驱动作为首选。

下面我们分别针对这两种方式,进行简要的介绍。

2.1 准备前置环境

在开始连接配置之前,我们需要先准备好以下前置条件,文章中不展开介绍一些安装工作了,大家可以自行查阅资料安装。

  • OceanBase 数据库环境 - 启动 OB 数据库,并开通外部访问(可以采用官方提供的 ODC 工具先尝试是否可以远程连接,成功后在到 Kettle 中去配置)我这里的配置如下,直接在 sys 租户下测了

  • 在 OB 的 test 数据库中创建两张测试表 t_in\t_out,并向 t_in 中插入部分数据,用于后面演示数据同步使用、
obclient [oceanbase]> use test;
Database changed
obclient [test]> create table t_in(id int,name text);
Query OK, 0 rows affected (0.079 sec)
obclient [test]> create table t_out(id int,name text);
Query OK, 0 rows affected (0.040 sec)
obclient [test]> insert into t_in values(1,'a'),(2,'b'),(3,'c');
Query OK, 3 rows affected (0.013 sec)
 Records: 3  Duplicates: 0  Warnings: 0
obclient [test]> insert into t_in select * from t_in;
Query OK, 3 rows affected (0.004 sec)
 Records: 3  Duplicates: 0  Warnings: 0
......
obclient [test]> select count(*) from t_in;
+----------+
| count(*) |
+----------+
|      192 |
+----------+
1 row in set (0.001 sec)
  • 在自己笔记本准备好 Data Integration(kettle)软件,并测试软件可以正常打开图形化界面使用,从 OB 和 MySQL 官网下载 JDBC 驱动,将驱动放到 data-integration/lib 目录下

2.2 采用 OceanBase 官方驱动连接

这种方式会使用 OceanBase 的 JDBC jar 包。首先我们在 kettle 图形化界面创建一个【转换】,然后从【核心对象】中拖入【表输入】/【表输出】。


双击打开【表输入】,在右侧点击【新建】按钮,跳出新建数据库连接界面,重点配置就在这里了。我们根据以下几个要点,进行 OceanBase 数据库连接配置:

  • 连接名称 - 起个自己觉得合适的名字,比如 OceanBase1
  • 连接类型 - 选择通用数据库【Generic database】
  • 连接方式 - 选择 JDBC
  • 自定义连接 URL - 参考下图,格式为:jdbc:oceanbase://ip:port/dbname
  • 自定义驱动类名称 - com.alipay.oceanbase.jdbc.Driver, 如果这个类名称报错,最好找官方小伙伴问一下是否发生了变化
  • 用户名/密码 - 按需填入即可


配置完后,点击测试按钮,成功连接到 OceanBase 表示配置正确。

2.3 采用 MySQL 驱动连接

这种方式会使用 MySQL 的 JDBC jar 包。因为 OceanBase 社区版支持 MySQL 租户,所以兼容性上基本不存在什么问题。我们依然使用刚才创建的【转换】,这次我们双击【表输出】。


在右侧点击【新建】按钮,跳出新建数据库连接界面,重点配置就在这里了。我们根据以下几个要点,进行 OB-MySQL 数据库连接配置:

  • 连接名称 - 起个自己觉得合适的名字,比如 OB-MySQL
  • 连接类型 - 选择通用数据库【Generic database】,这里不选择 kettle 默认的 MySQL 或 MariaDB 是因为可能存在老版本 kettle 对 mysql 驱动使用不正确而导致无法连接的问题,我们采用通用数据库配置一个自己的 MySQL 连接
  • 连接方式 - 选择 JDBC
  • 自定义连接 URL - 参考下图,格式为:jdbc:mysql://ip:port/dbname
  • 自定义驱动类名称 - com.mysql.jdbc.Driver, 如果这个类名称报错,最好找官方小伙伴问一下是否发生了变化
  • 用户名/密码 - 按需填入即可


配置完后,点击测试按钮,成功连接到 OceanBase 表示配置正确。


3. 执行数据同步测试

上面我们已经配置了两种不同的连接方式,分别对应了表输入和表输出。下面我们配置一下这个转换的具体同步表,并执行同步,看看是否可用。

首先我们将表输入中的 SQL 语句完善,并预览一下是否能查到数据:


然后我们将表输出再次打开,配置里面的“目标表”及数据库字段映射,如下:


最后将两个步骤连接起来,点击左上角的运行按钮执行同步。


查看数据库中的表数据,已经从 t_in 同步到 t_out 中了。

obclient [test]> select count(*) from t_out;
+----------+
| count(*) |
+----------+
|      192 |
+----------+
1 row in set (0.000 sec)


至此,Data Integration(Kettle) 连接 OceanBase 进行数据同步的操作就分享完成了,基础连接组件引入完成后,大家可以使用各种 Kettle 组建将数据从 OB 中取出来处理,或将别的数据源的数据处理完成后同步到 OB 中去。是不是很简单?大家都上手来试一试吧~

最后修改时间:2022-11-25 14:53:09
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论