Flink解析binlog方案

01、在项目中加入maven依赖

<dependency>
 <groupId>com.alibaba.otter</groupId>
 <artifactId>canal.client</artifactId>
 <version>1.1.4</version>
</dependency>

02、在自定义的实现类中传入的是kafka传来的binlog,string格式,后续我们仅需要将binlog解析打入到kudu数据库即可

03、查看源码,FlatMessage 就是binlog格式的类对象

package com.alibaba.otter.canal.protocol;

import com.alibaba.google.common.collect.Lists;
import java.io.Serializable;
import java.util.List;
import java.util.Map;

public class FlatMessage implements Serializable {
    private static final long serialVersionUID = -3386650678735860050L;
 private long id;
 private String database;
 private String table;
 private List<String> pkNames;
 private Boolean isDdl;
 private String type;
 private Long es;
 private Long ts;
 private String sql;
 private Map<String, Integer> sqlType;
 private Map<String, String> mysqlType;
 private List<Map<String, String>> data;
 private List<Map<String, String>> old;

 public FlatMessage() {
    }

    public FlatMessage(long id) {
        this.id = id;
 }

    public long getId() {
        return this.id;
 }

    public void setId(long id) {
        this.id = id;
 }

    public String getDatabase() {
        return this.database;
 }

    public void setDatabase(String database) {
        this.database = database;
 }

    public String getTable() {
        return this.table;
 }

    public void setTable(String table) {
        this.table = table;
 }

    public List<String> getPkNames() {
        return this.pkNames;
 }

    public void addPkName(String pkName) {
        if (this.pkNames == null) {
            this.pkNames = Lists.newArrayList();
 }

        this.pkNames.add(pkName);
 }

    public void setPkNames(List<String> pkNames) {
        this.pkNames = pkNames;
 }

    public Boolean getIsDdl() {
        return this.isDdl;
 }

    public void setIsDdl(Boolean isDdl) {
        this.isDdl = isDdl;
 }

    public String getType() {
        return this.type;
 }

    public void setType(String type) {
        this.type = type;
 }

    public Long getTs() {
        return this.ts;
 }

    public void setTs(Long ts) {
        this.ts = ts;
 }

    public String getSql() {
        return this.sql;
 }

    public void setSql(String sql) {
        this.sql = sql;
 }

    public Map<String, Integer> getSqlType() {
        return this.sqlType;
 }

    public void setSqlType(Map<String, Integer> sqlType) {
        this.sqlType = sqlType;
 }

    public Map<String, String> getMysqlType() {
        return this.mysqlType;
 }

    public void setMysqlType(Map<String, String> mysqlType) {
        this.mysqlType = mysqlType;
 }

    public List<Map<String, String>> getData() {
        return this.data;
 }

    public void setData(List<Map<String, String>> data) {
        this.data = data;
 }

    public List<Map<String, String>> getOld() {
        return this.old;
 }

    public void setOld(List<Map<String, String>> old) {
        this.old = old;
 }

    public Long getEs() {
        return this.es;
 }

    public void setEs(Long es) {
        this.es = es;
 }

    public String toString() {
        return "FlatMessage [id=" + this.id + ", database=" + this.database + ", table=" + this.table + ", isDdl=" + this.isDdl + ", type=" + this.type + ", es=" + this.es + ", ts=" + this.ts + ", sql=" + this.sql + ", sqlType=" + this.sqlType + ", mysqlType=" + this.mysqlType + ", data=" + this.data + ", old=" + this.old + "]";
 }
}

04、用下面的方式实现类对象

FlatMessage flatMessage = JSON.parseObject(flatMessageJson, FlatMessage.class);

05、之后编写工具类实现kudu解析flatMessage ,完成增删改即可

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值