功能介绍

LindormStreams通过推送的方式,将HBase增强版(Lindorm)表的数据变更推送到下游消息队列。

投递方式

HBase表数据变更后,LindormStreams会实时把数据变更消息主动推送到下游Kafka:

streamsmessagedeliver

消息投递语义

  • 顺序性 - 当前消息发送不保证有序,后续将支持Key级别保序,同一个主键数据的更新严格按照更新顺序发送。

  • 重复性 - LindormStreams支持At Least once语义,有可能出现消息重复。

消息格式

LindormStreams消息目前只包含更新的内容,比如表有a、b、c三个字段,当用户只更新了c字段时消息中只会包含主键和c字段最新的值 (后续会支持获取更新后整行的数据以及更新前的值),详细消息内容:

{
  "op" : <opType>             // 操作类型: Put/DeleteFamily
  "table" : <tableName>       // 表名
  "ts" : <defaultVersion>     // 默认版本,列数据中如果没有ts健时取该值做为版本
  "keyOnly":<keyOnly>         // 是否只包含主键数据
  "data" : [
    {
      "type" : <type>          // 列数据类型
      "name" : <name>          // 列名
      "ts" : <version>         // 数据版本,如果没有该值,取dts的值做为版本
      "value" : <value>        // 值,如果没有该值,则表中值为null
  },
  {
      "type" : <type>          // 列数据类型
      "name" : <name>          // 列名
      "ts" : <version>         // 数据版本,如果没有该值,取dts的值做为版本
      "value" : <value>        // 值,如果没有该值,则表中值为null
  }
  ]
}
  • 消息内容配置:

参数名

类型

是否必选

示例值

描述

key_only

boolean

false

是否只同步主键, 默认为false。

unique_key

boolean

false

是否同一批次,相同主键只发送一次,默认为false。

即将上线功能

功能

说明

支持newImage/oldImage

  • 支持导出整行数据的最新值。

  • 支持导出整行数据更新前的值。

Key级别保序

增量导出的数据支持保证同一个key消息的输出是有序的。

数据保留时间、数据回放

支持设置增量数据保留时间,支持重置同步点位,从指定时间拉取数据。

UDF

支持用户自定义UDF,用户可以根据自己的业务逻辑实现对数据进行简单的转换或过滤。

Streams Api

直接使用Streams Api,直接拉取Streams消息,不需要对接下游中间消息或存储。

函数计算

支持对接函数计算。