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 に維持されます。