flinkCDC+iceberg(hadoopカタログ)mysqlデータベースデータを同期します

Flink は、Hadoop カタログと Hits カタログを実装できます。

前者は、hdfs アドレスをマッピングしてデータ ストレージを実現します。

後者は、ハイブおよびその他のプロジェクト操作に関連するデータ処理のためにハイブ テーブルのアドレスをマップします。

1. 環境の準備

公式ウェブサイト:https://iceberg.apache.org/

1. Hadoop は 分散クラスターである必要があります

2. データベースに接続するには、flink-connector-mysql-cdc-1.4.0.jar が必要です。つまり、mysql-cdc コネクタは flink のライブラリの下に配置されます。

3. Iceberg 0.13.1 の jar パッケージは ${FLINK_HOME}/lib の下に配置する必要があります

4. mysql の binlog ログを開きます。mysql は binlog ログを開き、/etc/my.cnf ファイルを変更して、次の 2 つのコード段落を追加する必要があります。

server-id=1
log-bin=mysql-bin 


この記事のバージョン: バージョン flink 1.13.6+iceberg 0.13.1

2.flink環境を開始します

#启动flink环境
${FLINK_HOME}/bin/start-cluster.sh


#启动flinksql
${FLINK_HOME}/bin/sql-client.sh

3. 贅沢なひととき

#流操作
SET execution.runtime-mode=streaming;

##手动设置checkpoint时间 
set execution.checkpointing.interval=5sec;

####数据库连接
CREATE TABLE mysql_binlog(
    name STRING ,
    cust_id INT,
    age INT,
    PRIMARY KEY (cust_id) NOT ENFORCED
)WITH (
'connector' = 'mysql-cdc',
'hostname' = 'hadoop01',
'port' = '3306',
'username' = 'root',
'password' = 'pwd',
'server-time-zone' = 'Asia/Shanghai',
'debezium.snapshot.mode'='initial',
'database-name' = 'FlinkCDC',
'table-name' = 'person'
);


#检查数据库连接数据是否正常
select * from mysql_binlog;


#创建iceberg表
CREATE TABLE sample(
    name STRING ,
    cust_id INT,
    age INT,
    PRIMARY KEY (cust_id) NOT ENFORCED
)WITH (
'connector'='iceberg',
'catalog-name'='iceberg_catalog',  --catalog名称
'catalog-type'='hadoop',  --创建的为hadoop的catalog
'warehouse'='hdfs://hadoop01:8020/iceberg/test2',  --指定数据位置
'format-version'='2'  --版本 2 支持带主键的表upsert但是仍然无法流式查询。版本 1 不支持带主键的表upsert
);

##导入数据到iceberg
insert into sample select * from mysql_binlog;

##检查数据是否导入成功
select * from sample;

豊富な知識:
Iceberg がコードを使用して小さいファイルをマージする場合、この構成が有効になっていない場合、履歴ファイルも削除されません。有効にすると、履歴ファイルはマージが有効になった後にクリアされます。コミットが有効になると、メタデータが書き込まれ、削除     さ     れ         ます
    。


保持される履歴ファイルの最大数は 5 で、メタデータとデータのファイル数は常に 6 に維持されます。

おすすめ

転載: blog.csdn.net/qq_40788398/article/details/124245335