tencent cloud

Data Transfer Service

Avroデモの説明(Flink)

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-11-05 17:13:23
AI翻訳

Demo主要ロジックの説明

Demo内のファイルの説明は以下の通りです:
consumerDemo-avro-flink\\src\\main\\resources\\avro-tools-1.8.2.jar:Avroプロトコル関連コードの生成に使用するツールです。
consumerDemo-avro-flink\\src\\main\\java\\com\\tencent\\subscribe\\avro:Avroツールがコードを生成するディレクトリです。
consumerDemo-avro-flink\\src\\main\\resources\\Record.avsc:プロトコル定義ファイルです。
Record.avscでは14個の構造(Avroではschemaと呼ばれます)を定義しています。その中の主要なデータ構造はRecordであり、binlog内の1件のデータを表すために使用されます。Recordの構造は以下の通りです。その他のデータ構造はRecord.avscで確認できます:
{
"namespace": "com.tencent.subscribe.avro", //Record.avsc の最後の1個のschemaで、"name" は "Record" と表示されます
"type": "record",
"name": "Record", //"name" は "Record" と表示され、kafkaから消費するデータ形式を表します
"fields": [
{
"name": "id", //idはグローバルに増加するIDを示し、その他のrecordの値の説明は以下の表の通りです
"type": "long",
"doc": "unique id of this record in the whole stream"
},
{
"name": "version", //versionはプロトコルバージョンを示します
"type": "int",
"doc": "protocol version"
},
{
"name": "messageType", //メッセージタイプ
"aliases": [
"operation"
],
"type": {
"namespace": "com.tencent.subscribe.avro",
"name": "MessageType",
"type": "enum",
"symbols": [
"INSERT",
"UPDATE",
"DELETE",
"DDL",
"BEGIN",
"COMMIT",
"HEARTBEAT",
"CHECKPOINT",
"ROLLBACK"
]
}
},
{
……
},
}
Record内のフィールドタイプの説明は以下の通りです:
Recordのフィールド名
説明
id
グローバルに増加するID。
version
プロトコルバージョン。現在のバージョンは1です。
messageType
メッセージタイプ。列挙値:「INSERT」、「UPDATE」、「DELETE」、「DDL」、「BEGIN」、「COMMIT」、「HEARTBEAT」、「CHECKPOINT」。
fileName
現在のレコードが存在するbinlogファイル名。
position
現在のレコードのbinlog内での終了オフセット。形式はEnd_log_pos@binlogファイル番号です。例えば、現在のレコードがファイルmysql-bin.000004にあり、終了オフセットが2196の場合、その値は「2196@4」です。
safePosition
現在のトランザクションがbinlog内で開始されるオフセット。形式は上記と同じです。
timestamp
binlogに書き込まれる時間。unixタイムスタンプ、秒単位です。
gtid
現在のgtid。例:c7c98333-6006-11ed-bfc9-b8cef6e1a231:9。
transactionId
トランザクションID。commitイベントのみがトランザクションIDを生成します。
serverId
ソースデータベースのserverId。ソースデータベースのserver_idを確認するには、SHOW VARIABLES LIKE 'server_id'を参照してください。
threadId
現在のトランザクションをコミットしたセッションID。SHOW processlist;を参照してください。
sourceType
ソースデータベースのデータベースタイプ。現在のバージョンではMySQLのみです。
sourceVersion
ソースデータベースのバージョン。ソースデータベースのバージョンを確認するには、select version();を参照してください。
schemaName
データベース名。
tableName
テーブル名。
objectName
形式:データベース名.テーブル名。
columns
テーブル内の各列の定義。
oldColumns
DML実行前の該当行のデータです。insertメッセージの場合、この配列はnullです。配列内の要素には12種類のタイプがあります:Integer、Character、Decimal、Float、Timestamp、DateTime、TimestampWithTimeZone、BinaryGeometry、TextGeometry、BinaryObject、TextObject、EmptyObject。詳細はdemoの定義を参照してください。
newColumns
DML実行後の該当行のデータです。deleteメッセージの場合、この配列はnullです。配列内の要素には12種類のタイプがあります:Integer、Character、Decimal、Float、Timestamp、DateTime、TimestampWithTimeZone、BinaryGeometry、TextGeometry、BinaryObject、TextObject、EmptyObject。詳細はdemoの定義を参照してください。
sql
DDLのSQL文。
executionTime
DDLの実行時間。単位は秒です。
heartbeatTimestamp
ハートビートメッセージのタイムスタンプ。秒単位です。このフィールドはheartbeatメッセージにのみ存在します。
syncedGtid
DTSが解析済みのGTIDセット。形式は例:c7c98333-6006-11ed-bfc9-b8cef6e1a231:1-13。
fakeGtid
構築された偽のGTIDかどうか。gtid_modeがオフの場合、DTSはGTIDを構築します。
pkNames
ソースデータベースのテーブルにPKが設定されている場合、DMLメッセージにこのパラメータが含まれます。設定されていない場合は含まれません。
readerTimestamp
DTSがこのデータを処理する時間。unixタイムスタンプ、単位はミリ秒です。
tags
QueryEvent内のstatus_varsです。詳細はQueryEventを参照してください。
total
メッセージがシャードされる場合、シャードの総数を記録します。現在のバージョン(version=1)では意味がなく、将来の拡張のために予約されています。
index
メッセージがシャードされる場合、現在のシャードのインデックスを記録します。現在のバージョン(version=1)では意味がなく、将来の拡張のために予約されています。
Record内で列属性を記述するフィールドは「Field」であり、以下の4つの属性を含みます:
name:列名。
dataTypeNumber:binlogに記録されるデータ型です。値の詳細はMySQLを参照してください。
isKey:PKかどうか。
originalType:DDLで定義されたタイプです。

データベースフィールドのマッピング関係

以下は、データベース(MySQLなど)のフィールドタイプとAvroプロトコルで定義されたデータ型との間のマッピング関係です。
MySQL タイプ
Avro における型
MYSQL_TYPE_NULL
EmptyObject
MYSQL_TYPE_INT8
Integer
MYSQL_TYPE_INT16
Integer
MYSQL_TYPE_INT24
Integer
MYSQL_TYPE_INT32
Integer
MYSQL_TYPE_INT64
Integer
MYSQL_TYPE_BIT
Integer
MYSQL_TYPE_YEAR
DateTime
MYSQL_TYPE_FLOAT
Float
MYSQL_TYPE_DOUBLE
Float
MYSQL_TYPE_VARCHAR
Character
MYSQL_TYPE_STRING
Character、元の型がbinaryの場合、BinaryObjectに対応します。
MYSQL_TYPE_VAR_STRING
Character、元の型がvarbinaryの場合、BinaryObjectに対応します。
MYSQL_TYPE_TIMESTAMP
Timestamp
MYSQL_TYPE_DATE
DateTime
MYSQL_TYPE_TIME
DateTime
MYSQL_TYPE_DATETIME
DateTime
MYSQL_TYPE_TIMESTAMP_NEW
Timestamp
MYSQL_TYPE_DATE_NEW
DateTime
MYSQL_TYPE_TIME_NEW
DateTime
MYSQL_TYPE_DATETIME_NEW
DateTime
MYSQL_TYPE_ENUM
TextObject
MYSQL_TYPE_SET
TextObject
MYSQL_TYPE_DECIMAL
Decimal
MYSQL_TYPE_DECIMAL_NEW
Decimal
MYSQL_TYPE_JSON
TextObject
MYSQL_TYPE_BLOB
BinaryObject
MYSQL_TYPE_TINY_BLOB
BinaryObject
MYSQL_TYPE_MEDIUM_BLOB
BinaryObject
MYSQL_TYPE_LONG_BLOB
BinaryObject
MYSQL_TYPE_GEOMETRY
BinaryObject


ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック