演習データ レイク アイスバーグ レッスン 35 は、データ レイク アイスバーグのストリーム バッチ統合アーキテクチャに基づいています。増分読み取りが完全か増分のみかをテストします。

シリーズ記事ディレクトリ

Practice Data Lake iceberg レッスン 1 はじめに
Practice Data Lake iceberg レッスン 2 Iceberg は Hadoop の基礎となるデータ形式に基づいています
実践 data lake
iceberg sqlclient で、SQL を使用して Kafka から iceberg にデータを読み取ります (バージョンを flink1.12.7 にアップグレードします)
実践 data lake iceberg レッスン 5 ハイブ カタログの特徴演習データ lake iceberg レッスン 6 kafka からiceberg への書き込み
失敗問題解決の演習データファイル演習データ lake iceberg レッスン 10 スナップショット 削除演習データ lake iceberg レッスン 11 テスト パーティション テーブルの整合性 プロセス (数値の作成、テーブルの作成、マージ、およびスナップショットの削除)演習データ lake iceberg レッスン 12 カタログとは 演習データlake iceberg レッスン 13 メタデータデータファイルよりも何倍も大きい演習 data lake iceberg レッスン 14 データマージ (時間の経過とともにメタデータが拡張する問題を解決するため)演習 data lake iceberg レッスン 15 spark インストールと統合 iceberg (jersey パッケージの競合)演習 data lake iceberg レッスン 16 spark3 Door による氷山の認識










演習 data lake iceberg レッスン 17 Hadoop2.7、spark3 on yarn run iceberg 構成
演習 data lake iceberg 演習 18 複数のクライアントが iceberg とやり取りする 開始コマンド (よく使われるコマンド)
演習 data lake iceberg レッスン 19 flink count iceberg , 結果が出ない問題の
演習 data lake iceberg レッスン 20 flink + iceberg CDC シナリオ (バージョンの問題、テスト失敗)
練習データ lake iceberg レッスン 21 flink1.13.5 + iceberg0.131 CDC (テスト成功 INSERT、変更操作失敗)
練習データ lake iceberg レッスン 22 flink1.13.5 + iceberg0. 131 CDC (CRUD テスト成功)
練習データ lake iceberg レッスン 23 flink-sql
チェックポイントから練習データ lake iceberg を再開する レッスン 24 iceberg メタデータの詳細 練習データ
lake iceberg を分析する レッスン 25 flink sql をバックグラウンドで実行する 追加、削除、変更の効果
実践 data lake iceberg レッスン 26 チェックポイントの設定方法
実践 data lake iceberg レッスン 27 Flink cdc テスト プログラムの失敗 再起動: 前回のチェックポイントから再起動して作業を続行できる
実践 data lake iceberg レッスン 28 公共の倉庫に存在しないパッケージをローカルにデプロイする倉庫の練習 data lake iceberg レッスン 29 flink jobIdをエレガント
かつ効率的に取得する方法

data lake iceberg を実践する レッスン 31 github の flink-streaming-platform-web ツールを使用して flink タスク フローを管理し、cdc 再起動シナリオをテスト
する
json 関数をサポートする組み込み関数を使用
データ レイク アイスバーグの実践 レッスン 34 データ レイク アイスバーグのストリーム バッチ統合アーキテクチャに基づく ストリーム アーキテクチャ テスト プラクティス データ レイク アイスバーグ レッスン 35 データ レイク アイスバーグのストリーム バッチ統合
アーキテクチャに基づく読み取りは完全または増分のみ
練習データ レイク アイスバーグ その他のコンテンツ ディレクトリ


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


序文

ここに画像の説明を挿入

前のレッスンで増分更新について話したとき、弟の上司は、増分実装のために、増分データを読み取るか、履歴データを再度読み取るかを尋ねました。私の理解によれば、クリティカルはインクリメントを読むことです。. . 、上司は理解に同意しません!さて、テストしてみましょう.この記事で、読者は私の出血する心を感じます.あなたにそのような経験があるかどうか尋ねてもよろしいですか. . .

1. アイデアのテスト

上記の kafka のケースから続けて、プロデューサーはデータを kafka に送信し、flink-sql は kafka データを iceberg に送信します. このセクションでは、iceberg から消費を続けます. テスト: select * from hive_iceberg_catalog.ods_base.IcebergSink_XXZH / + OPTIONS('
streaming ' = 'true', 'monitor-interval'='1s') /
この sql のインクリメンタル オペレータがトリガーされたとき、それはフルかインクリメンタルか

2.ケーステスト

1.コード

 
     public static void main(String[] args) throws Exception {
    
    
        //TODO 1.准备环境
        //1.1流处理环境
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(1);
        //1.2 表执行环境
        StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);


        String sql2 = "CREATE CATALOG hive_iceberg_catalog WITH (\n" +
                "    'type'='iceberg',\n" +
                "    'catalog-type'='hive',\n" +
                "    'uri'='thrift://hadoop101:9083',\n" +
                "    'clients'='5',\n" +
                "    'property-version'='1',\n" +
                "    'warehouse'='hdfs:///user/hive/warehouse/hive_iceberg_catalog'\n" +
                ")";
        String sql3 = "use catalog hive_iceberg_catalog";
        String sql4 = "CREATE TABLE IF NOT EXISTS ods_base.IcebergSink_XXZH (\n" +
                "    `log` STRING,\n" +
                "\t`dt` INT\n" +
                ")with(\n" +
                "    'write.metadata.delete-after-commit.enabled'='true',\n" +
                "    'write.metadata.previous-versions-max'='5',\n" +
                "    'format-version'='2'\n" +
                " )";
      String sql6 = "select * from  hive_iceberg_catalog.ods_base.IcebergSink_XXZH /*+ OPTIONS('streaming'='true', 'monitor-interval'='1s')*/ ";

        tableEnv.executeSql(sql2);
        tableEnv.executeSql(sql3);
        tableEnv.executeSql(sql4);
        tableEnv.executeSql(sql6).print();



        //TODO 6.执行任务
        env.execute();

    }


2.プログラムを開始します

コンソールは履歴データを出力します

| +I |                              e |    20230101 |
| +I |                              e |    20230101 |
| +I |                              e |    20230101 |
| +I |                             >e |    20230101 |
| +I |                              e |     2023010 |
| +I |                            abc |    20240101 |
| +I |                           abcd |    20240101 |
| +I |                           abcd |    20240101 |
| +I |                              ; |      (NULL) |
| +I ||      (NULL) |
| +I |                              ; |      (NULL) |
| +I ||      (NULL) |
22/06/16 21:09:21 INFO compress.CodecPool: Got brand-new decompressor [.gz]
| +I |                              1 |    20220601 |
22/06/16 21:09:21 INFO compress.CodecPool: Got brand-new decompressor [.gz]
| +I |                              2 |    20220601 |

3. プロデューサーを起動して結果を観察する

[root@hadoop101 lib]# kafka-console-producer.sh --broker-list  hadoop101:9092,hadoop102:9092,hadoop103:9092  --topic test_xxzh

次のいずれかを入力してください:

2,20220606

コンソールを観察すると、もう 1 つのインクリメントがあることがわかります。

22/06/16 21:15:48 INFO compress.CodecPool: Got brand-new decompressor [.gz]
| +I |                              2 |    20220606 |

要約する

select * from hive_iceberg_catalog.ods_base.IcebergSink_XXZH / + OPTIONS('streaming'='true', 'monitor-interval'='1s') /

この文法的な確認は、すべてのデータを 1 回読み直すのではなく、データを段階的に処理することです。

おすすめ

転載: blog.csdn.net/spark_dev/article/details/125323191
おすすめ