《StreamSets实现Kafka数据实时写入Mysql》

上一篇按照官网介绍实现了Mysql  -> Mysql的数据同步。但订阅数据库过于死板,当源表数据结构发生变化时管道就要重新写,不够灵活。这一篇我们来看下数据通过kafka同步到mysql是如何配置的。

kafka origin的安装就不介绍了,直接在Package Manager里点击安装就可以了。我们重点看下实现。

啰嗦一句吧。kafka origin目前支持Avro、Binary、Datagram、Delimited、JSON、Log、Protobuf、SDC Record、Text、XML这几种数据格式。我们使用最常用的JSON格式。

好,开干!

1. 新建管道

2. 选取KafkaConsumer Origin

3. 配置kafka

3.1 kafka

都能看懂,我就不说了。

3.2 Data Format

选择JSON

4. 选择JDBC  Destination

5. 配置JDBC Producer

5.1 JDBC

多个字段的话点击Column Name最右边的 加号,让mysql表字段和kafka字段一一对应,数据类型用默认的就行(数据库的字段类型)

选择订阅类型 INSERRT(可以建立多个destination,除了Default Operation不同外,其他配置相同,比如我建了两个,一个INSERT,一个UPDATE)

5.2 Credentials

配置JDBC的用户名和密码 

6. 异常处理

如果你是按照我说的配置的,外面应该还有个警告符号。这是因为我们还没有配置错误记录应该如何处理。

 点击视图空白处,点击Error Records

如何处理有多种方式,方便起见我选择写出到文件。这时会多出一个Error Records - Write to File警告

填一个本地路径(暂时没试过HDFS可不可以)

这时候一个kafka -> mysql的管道就建好了。目前只能实现INSERT功能,遇到相同的主键会报错,错误信息会写出到外部文件(就是刚配置的那个目录)。我还想配置一个UPDATE 功能,就是说主键相同,其他内容不同时,可以实现更新字段功能。这个配置和INSERT是一样的,只有JDBC的默认操作模式不同,选择UPDATE即可,其他一样。

有些同学可能找不到再哪加,说一下吧。

点击Kafka Consumer 拖动光标与JDBC Producer2连到一起

配置JDBC Producer2,与JDBC Producer1一样,唯一不一样的就是默认操作模式选择UPDATE。

配置好后界面是这样的

运行一波,自己用java编码发送测试数据。

目前表是空的

 启动StreamSets

启动kafka生产者发送五条数据。

 看一下数据库

数据进来了,下面我们测试下更新操作。

再发5条数据,主键一致,agentId不同

看一下结果

看一下 新纪录不给agentId赋值会怎么样

看一下结果

可见我们的需求完成了。新数据到来时,主键相同则更新值不同的字段,主键不存在则新增。大功告成。

参考:

https://streamsets.com/documentation/datacollector/latest/help/datacollector/UserGuide/Origins/KConsumer.html#concept_msz_wnr_5q

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值