实践数据湖iceberg 第三十五课 基于数据湖icerberg的流批一体架构--测试增量读是读全量还是仅读增量

系列文章目录

实践数据湖iceberg 第一课 入门
实践数据湖iceberg 第二课 iceberg基于hadoop的底层数据格式
实践数据湖iceberg 第三课 在sqlclient中,以sql方式从kafka读数据到iceberg
实践数据湖iceberg 第四课 在sqlclient中,以sql方式从kafka读数据到iceberg(升级版本到flink1.12.7)
实践数据湖iceberg 第五课 hive catalog特点
实践数据湖iceberg 第六课 从kafka写入到iceberg失败问题 解决
实践数据湖iceberg 第七课 实时写入到iceberg
实践数据湖iceberg 第八课 hive与iceberg集成
实践数据湖iceberg 第九课 合并小文件
实践数据湖iceberg 第十课 快照删除
实践数据湖iceberg 第十一课 测试分区表完整流程(造数、建表、合并、删快照)
实践数据湖iceberg 第十二课 catalog是什么
实践数据湖iceberg 第十三课 metadata比数据文件大很多倍的问题
实践数据湖iceberg 第十四课 元数据合并(解决元数据随时间增加而元数据膨胀的问题)
实践数据湖iceberg 第十五课 spark安装与集成iceberg(jersey包冲突)
实践数据湖iceberg 第十六课 通过spark3打开iceberg的认知之门
实践数据湖iceberg 第十七课 hadoop2.7,spark3 on yarn运行iceberg配置
实践数据湖iceberg 第十八课 多种客户端与iceberg交互启动命令(常用命令)
实践数据湖iceberg 第十九课 flink count iceberg,无结果问题
实践数据湖iceberg 第二十课 flink + iceberg CDC场景(版本问题,测试失败)
实践数据湖iceberg 第二十一课 flink1.13.5 + iceberg0.131 CDC(测试成功INSERT,变更操作失败)
实践数据湖iceberg 第二十二课 flink1.13.5 + iceberg0.131 CDC(CRUD测试成功)
实践数据湖iceberg 第二十三课 flink-sql从checkpoint重启
实践数据湖iceberg 第二十四课 iceberg元数据详细解析
实践数据湖iceberg 第二十五课 后台运行flink sql 增删改的效果
实践数据湖iceberg 第二十六课 checkpoint设置方法
实践数据湖iceberg 第二十七课 flink cdc 测试程序故障重启:能从上次checkpoint点继续工作
实践数据湖iceberg 第二十八课 把公有仓库上不存在的包部署到本地仓库
实践数据湖iceberg 第二十九课 如何优雅高效获取flink的jobId
实践数据湖iceberg 第三十课 mysql->iceberg,不同客户端有时区问题
实践数据湖iceberg 第三十一课 使用github的flink-streaming-platform-web工具,管理flink任务流,测试cdc重启场景
实践数据湖iceberg 第三十二课 DDL语句通过hive catalog持久化方法
实践数据湖iceberg 第三十三课 升级flink到1.14,自带functioin支持json函数
实践数据湖iceberg 第三十四课 基于数据湖icerberg的流批一体架构-流架构测试
实践数据湖iceberg 第三十五课 基于数据湖icerberg的流批一体架构–测试增量读是读全量还是仅读增量
实践数据湖iceberg 更多的内容目录


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


前言

在这里插入图片描述

上一课中,讲到增量更新,小弟的boss问到,增量实现,是读增量数据还是把历史数据也重新读了一次? 暴击,按照我的理解,就是读增量。。。,大佬是不认按照理解的! 好吧,测试一下,故有本文,读者感到我滴血的心嘛,试问大家有没有这种经历。。。

一. 测试思路

接上文的kafka案例继续, 生产者往kafka发送数据, flink-sql把kafka的数据落地到iceberg, 本节继续从iceberg消费
测试: select * from hive_iceberg_catalog.ods_base.IcebergSink_XXZH /+ OPTIONS(‘streaming’=‘true’, ‘monitor-interval’=‘1s’)/
这个sql的增量算子触发时,是全量还是增量

二、案例测试

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

观察控制台, 发现增量多了一条:

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’)/

这种语法确认是增量处理数据,而不是从新读一次所有数据

猜你喜欢

转载自blog.csdn.net/spark_dev/article/details/125323191