在之前的博客中,小编介绍了如何在CDH中安装StreamSets,文章链接为:《CDH6.3.1中安装StreamSets3.16.0》。透过这个文章名称也能够看出来小编使用的CDH版本以及安装的StreamSets的版本了,这里就不多说了,本文主要介绍如何使用StreamSets实时的将MySQL中的数据导入到HBase中,主要从以下三个方面进行讲解:一、直接将数据实时的导入到HBase;二、选取部分字段进行实时导入;三、使用SQL查询的方式将MySQL中的数据实时的导入到HBase中。
在进行数据导入之前需要提前将MySQL的Binlog日志功能打开,修改my.cnf文件,添加以下配置:
server-id = 1739
log-bin = /usr/local/mysql/arch/mysql-bin
binlog_format = ROW
修改完成后,重启MySQL:
systemctl restart mysql
注意:如果原先配置文件中已经有了以上的配置,则不需要做改变。
将MySQL的驱动包上传至相关目录下:
目录1:
/opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR/streamsets-libs/streamsets-datacollector-mysql-binlog-lib/lib
目录2:
/opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR/streamsets-libs/streamsets-datacollector-jdbc-lib/lib
建议这两个目录都上传一份,以免后期报找不到驱动的错误。
mysql> show create table student;
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
`id` varchar(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`age` varchar(20) DEFAULT NULL,
`score` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
--创建命名空间
create_namespace 'ljs'
--创建表
create 'ljs:student','info'
(1)在“Properties”面板的“General”选项卡上,配置以下属性。
(2)在“MySQL Binary Log”选项卡上,配置以下属性。
(3)在“Credentials”选项卡上,配置以下属性。
(4)在“Advanced”选项卡上,配置以下属性。
到此MySQL Binary Log的配置完成。
这里添加一个“Stream Selector”主要是用于过滤我们需要处理的表。
(1)在“Properties”面板的“General”选项卡上,配置以下属性。
(2)在“Conditions”选项卡上, 为要创建的每个条件单击“添加”图标。可以使用简单或批量编辑模式来添加条件。每个新条件都会创建一个对应的输出位置,无法编辑或删除默认流的条件。
Trash目标端没有配置选项。
(1)在“Properties”面板的“General”选项卡上,配置以下属性。
(2)在“HBase”选项卡上,配置以下属性。
(1)创建完成后,可以点击下图图标监测是否有问题。
(2)如果连接没问题,可以启动Pipeline。
(3)向MySQL中插入几条测试数据:
mysql> insert into student values('1','xzw','25','99');
Query OK, 1 row affected (0.00 sec)
mysql> insert into student values('2','yxy','25','98');
Query OK, 1 row affected (0.00 sec)
此处可以很清楚的看到有两条数据input和output。查看HBase中的数据:
(4)向MySQL中执行update:
mysql> update student set name='lyq' where id = '2';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
查看HBase中的数据:
mysql> show create table stu;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| stu | CREATE TABLE `stu` (
`id` varchar(11) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`age` varchar(20) DEFAULT NULL,
`fav` varchar(20) DEFAULT NULL,
`addr` varchar(20) DEFAULT NULL,
`score` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
(1)在“Properties”面板的“General”选项卡上,配置以下属性。
(2)在“Remove”选项卡上,配置以下属性。
此处,选择的是过滤掉的字段列表。
同样的,先测试是都能够连接通过,通过后,启动Pipeline。向MySQL中插入几条数据:
mysql> insert into stu values('20','test','23','84','12','12');
Query OK, 1 row affected (0.00 sec)
mysql> insert into stu values('15','xzw','23','84','12','12');
Query OK, 1 row affected (0.00 sec)
查看HBase中的结果:
此时,更新MySQL中的数据内容:
mysql> update stu set name = 'yxy' where id = '20';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
再次查看HBase中的数据:
(1)在“Properties”面板的“General”选项卡上,配置以下属性。
(2)在“JDBC”选项卡上,配置以下属性。
(3)要与JDBC连接字符串分开输入JDBC凭据,请在“Credentials”选项卡上配置以下属性。
(4)要从Microsoft SQL Server处理变更捕获数据,请在“Change Data Capture”选项卡上,配置以下属性以按事务对行进行分组。
(5)使用低于4.0的JDBC版本时,在“Legacy Drivers”选项卡上,可以选择配置以下属性。
(6)在“Advanced”选项卡上,可以选择配置高级属性。这些属性的默认值在大多数情况下都应该起作用。
(1)跟之前一样,先测试一下看是否能够连通,如果没问题的话,点击运行,向MySQL中插入几条数据:
insert into stu values('20','yxy','23','84','12','12');
insert into stu values('15','xzw','23','84','12','12');
查看HBase中的数据情况:
此时,更新其中的某条数据:
mysql> update stu set name = 'lyq' where id = '20';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0
再次查看HBase中的数据:
到这里,本文就接近尾声了,在此过程中,你们都遇到了什么问题,欢迎留言,让我看看你们遇到了什么问题~