更新时间:2024-11-29 GMT+08:00

CDL支持同步开源Debezium JSON数据

Debezium是一个用来捕获数据库变更的开源分布式平台,以事件流的形式记录每张表的行级变更。Debezium基于Kafka构建,提供了一组与Kafka Connect兼容的连接器,每个连接器用来捕获特定数据库的变更事件并将事件流发送给Kafka Topic。CDL目前支持处理1.4.0版本MySQL、PostgreSQL和Oracle数据库的Debezium连接器捕获的JSON格式的创建(c)、更改(u)和删除(d)事件消息。

数据库数据类型和Spark(Hudi)数据类型映射关系

当通过消费数据库Debezium JSON格式的变更事件消息将数据写入Hudi时,相关操作请参见2.6.3.12-从ThirdKafka同步debezium-json数据到Hudi,支持的数据库数据类型、数据库数据类型跟Spark数据类型的映射关系如下:

表1 PgSQL和Spark(Hudi)数据类型映射关系

PgSQL数据类型

Spark(Hudi)数据类型

int2

int

int4

int

int8

bigint

numeric[p, s]

  • decimal[p,s]:Debezium连接器的“decimal.handing.mode”参数值为“precise”(默认)。
  • string:Debezium连接器的“decimal.handing.mode”参数值为“string”。
  • double:Debezium连接器的“decimal.handing.mode”参数值为“double”。

bool

boolean

char

string

varchar

string

text

string

timestamptz

timestamp

timestamp

timestamp

date

date

json, jsonb

string

float4

float

float8

double

表2 MySQL和Spark(Hudi)数据类型映射关系

MySQL数据类型

Spark(Hudi)数据类型

int

int

integer

int

bigint

bigint

double

double

decimal[p,s]

  • decimal[p,s]:Debezium连接器的“decimal.handing.mode”参数值为“precise”(默认)。
  • string:Debezium连接器的“decimal.handing.mode”参数值为“string”。
  • double:Debezium连接器的“decimal.handing.mode”参数值为“double”。

varchar

string

char

string

text

string

timestamp

timestamp

datetime

timestamp

date

date

json

string

float

double

表3 Oracle 和Spark(Hudi)数据类型映射关系

Oracle数据类型

Spark(Hudi)数据类型

NUMBER(1,0)

boolean

NUMBER(P, 0) P->[2, 9]

int

NUMBER(P, 0) P->[10, 18]

bigint

NUMBER(P, 0) P >= 19

NUMBER(P, S > 0)

NUMBER[(P)]

  • decimal:Debezium连接器的“decimal.handing.mode”参数值为“precise”(默认)。
  • string:Debezium连接器的“decimal.handing.mode”参数值为“string”。
  • double:Debezium连接器的“decimal.handing.mode”参数值为“double”。

FLOAT

decimal

BINARY_DOUBLE

double

CHAR

string

VARCHAR

string

TIMESTAMP

timestamp

timestamp with time zone

timestamp

DATE

timestamp