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

数仓及其维度(分层)建模(ODS DWD DWS DWT ADS) 一. 数仓及其维度 1. 什么是数仓? 数据仓库,简称数仓,( Data Warehouse )。从逻辑上理解,数据库和数仓没有区别,都是通过数据库软件实现存放数据的地方,只不过从数据量来说,数据仓库要比数据库更庞大。 数仓主要是为企业制定决策,提供数据支持的。当业务简单,可以用数据库来存储,分析,制表。但当数据量几何式增长,需要跨机器整合时,数仓就是非常必要的了。 2. 数仓的特点 (1)集成性 数仓中存储的数据来源于多个数据源,原始数据在不同数据源中的存储方式......... 阅读详情

系列文章目录

实践数据湖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’)/

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

数据湖技术之Iceberg-01 原理解析、特性演进与Hive集成指南 数据湖技术是集中存储多源异构数据的解决方案,支持批流一体处理。传统数据仓库难以满足实时分析需求,而Kappa架构存在存储和查询限制。Apache Iceberg作为开放表格式,支持ACID事务、分区演化、模式变更等特性,实现存储层统一。其分层元数据设计(Snapshot、Manifest等)与轻量级集成能力,解决了实时数仓的痛点,成为大数据领域的重要技术。 阅读详情

相关推荐

数据湖技术之Iceberg-03 Iceberg整合Flink 实时写入与增量读取

本文介绍了Flink与Iceberg数据湖技术的整合方案。使用Flink 1.14.4和Iceberg 0.13.2版本,通过Maven配置相关依赖包。重点展示了如何通过DataStream API将Kafka数据实时写入Iceberg表:包括创建Kafka topic、设置checkpoint、读取Kafka数据、转换为RowData对象,以及配置Hadoop Catalog和Iceberg表Schema。文中提供了完整的代码示例,展示了从Kafka消费数据并写入Iceberg表的完整流程。该方案适用于需

yangwei2048的博客 1294

Iceberg 基础知识与基础使用

为了解决数据存储和计算引擎之间的适配的问题,Netflix开发了Iceberg,2018年11月16日进入Apache孵化器,2020 年5月19日从孵化器毕业,成为Apache的顶级项目。Iceberg是一个面向海量数据分析场景的开放表格式(Table Format)。表格式(Table Format)可以理解为元数据以及数据文件的一种组织方式,处于计算框架(Flink,Spark…)之下,数据文件之上。

Direction_Wind的博客 2260

探究flink-stream如何增量的读取iceberg table

从iceberg的官方文档上可以看到如下介绍: 实例程序中设置了startSnapshotId,介绍说可以从指定的快照版本号开始读取增量的数据。那么笔者的问题来了: flink-stream如何增量的读取iceberg table? flink本身肯定没有增量读取iceberg的能力,这是提供框架层的方法,在源码iceberg/flink/src/main/java/org/apache/iceberg/flink/source/中找到了StreamingReaderOperator.java类,继承了f

Cmainlove的专栏 4334

实践数据湖iceberg 第三十四课 基于数据湖icerberg的流批一体架构-流架构测试

lambda架构中, kafka->flink中支持 各种流函数, 数据入iceberg后,如何对icberg进行流操作,实现类似流函数的结果? 基于数据湖的流批一体是什么意思?

spark_dev的博客 2189

USB3.0/3.1信号完整性分析仿真

• 1.了解USB3.0通路的互连关系,解读原理图接口电路和PCB的互连电路。对USB布线的通路及阻抗进行检查和分析。 • 2.使用USB3.0实例文件提取互连线的S参数,选择SSRX+,SSRX-,SSTX+,SSTX-,D+,D-组的互连线,使用PowerSI,Clarity,3DFEM等工具提起关键网络的S参数。提取S参数以后需要分析S参数的互连特征,对S参数的结果开展评价。 • 3.使用SYSTEM SI USB3 Compliance工程向导模型,建立USB仿真实例框架,在框架BOLCK中带入S参

小猪配齐电子设计 1万+

UE5 GAS实战:从零构建一个MOBA英雄技能系统

本文详细介绍了如何利用UE5的Gameplay Ability System(GAS)构建MOBA英雄技能系统,涵盖核心组件如Ability System Component和GameplayEffect的使用,以及技能冷却、资源管理和连招系统等高级功能的实现。通过实战案例和代码示例,帮助开发者快速掌握GAS在MOBA游戏开发中的应用。

weixin_29012765的博客 526

实践数据湖iceberg 第三十六课 基于数据湖icerberg的流批一体架构--update mysql select from icberg语法是增量更新测试

续上一课,计算一个PV的,案例,最终把结果更新到MYSQL 本文测试如下语法是否增量更新 insert into default_catalog.default_database.mysql_pv select dt, cast(count(*) as int) as pv from hive_iceberg_catalog.ods_base.IcebergSink_XXZH /*+ OPTIONS('streaming'='true', 'monitor-interval'='1s')*/ where

spark_dev的博客 1333

FFmpeg魔改指南:让RTMP协议完美兼容H265的三种方法(含SRS适配技巧)

本文详细介绍了三种让RTMP协议兼容H265编码的FFmpeg魔改方案,包括基于官方补丁的标准改造、Intel的SVT-HEVC集成方案以及金山云的自定义扩展方案。文章重点解析了各方案的实现原理与适配技巧,并提供了在SRS 6.0服务器上进行深度配置和性能调优的完整实战指南,帮助开发者解决H265推流至传统RTMP服务器的兼容性问题。

weixin_29290947的博客 194

Flink Icerberg 离线输仓-维度建模过程(二)

维度建模一般按照以下四个步骤: 选择业务过程→声明粒度→确认维度→确认事实选择业务过程在业务系统中,挑选我们感兴趣的业务线,比如下单业务,支付业务,退款业务,物流业务,一条业务线对应一张事实表。声明粒度数据粒度指数据仓库的数据中保存数据的细化程度或综合程度的级别。 声明粒度意味着精确定义事实表中的一行数据表示什么,应该尽可能选择最小粒度,以此来应各种各样的需求。典型的粒度声明如下:订单事实表中一行数据表示的是一个订单中的一个商品项; 支付事实表中一行数据表示的是一个支付记录。确定维度维度的主要作用是描述业务

wank1259162的博客 483

mac安全干净卸载Anaconda3

主要原因是python命令没有映射到已经安装的python版本上,则需要添加。修改~/.bash_profile文件,将anaconda相关删除。现在想卸载Anaconda,恢复使用mac系统自带的Python。最后在mac的应用目录删除Anaconda。查看所有版本的python所在安装目录。或者不使用软连接映射,也可使用。再次查看python映射。查看python版本。建立软连接,添加映射。

buyue 5961

一步步带你用C#开发Modbus通信上位机(附完整代码与工程思路)

Modbus上位机开发指南(C#实现) 本文详细介绍使用C#开发Modbus上位机系统的全过程,覆盖RTU和TCP两种协议。内容包含:1)需求分析与技术选型(WinForms+NModbus4);2)分层架构设计(UI/业务/通信层);3)通信层核心代码实现(串口/以太网连接、数据读写);4)功能模块开发(设备管理、数据采集、远程控制)。提供可直接复用的Modbus RTU客户端代码示例,包含连接管理、线圈读写、寄存器操作等工业场景必备功能。通过系统化的开发流程,帮助开发者快速构建稳定可靠的Modbus监控

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 819

Apache Iceberg 分区表探索与实践

组件版本 组件 版本 Apache Iceberg 0.11 Apache Hive 2.1.0 Apache Spark 3.0 Apache Flink 1.11 文章目录简介测试分区表功能建表写入数据重写指定分区重写动态分区 简介 本篇介绍Apache Icerberg分区表自己的一些探索与实践,包括建表、数据写入、重写分区、删除分区、添加分区,数据链路操作设计如下图: 备注: 创建分区表、修改标属性:使用Hive 批量写入数据、重写分区:使用Spark 实时计算.

高矮 2757

Python爬虫技术:使用Playwright和Twitter API v2高效获取Twitter/X数据完全教程

遵守规则:始终遵循Twitter的使用条款和速率限制错误处理:实现完善的错误处理和重试机制数据质量:进行数据清洗和验证性能优化:使用异步处理和合理的延迟设置可维护性:模块化代码,便于维护和扩展。

2201_76125261的博客 671

Iceberg从入门到精通系列之一:Iceberg核心概念理解

Manifest(清单):描述Table状态的元数据,包括Table的Schema(模式)、Partition Spec(分区规范)和Current Snapshot ID(当前快照ID)等信息。Partition(分区):将数据按照指定规则分隔成的逻辑单元,Partition由一个或多个数据块(Block)组成。Block(块):其中存储的是Partition的数据,每个块都有一个唯一的ID,块的大小可以在表级别进行配置。创建了一个包含id和name字段的表,并且定义了以id字段为分区键的分区规则。

zhengzaifeidelushang的博客 8687

Arduino与震动马达模块握手

震动马达模块采用采用高品质手机震动马达,适用于震动感互动产品的制作,可穿戴智能设备震动提醒,适合作为非可听指示器的小型振动马达。当输入为高电平时电动机会震动,就像你的静音模式的手机一样。

vor234的博客 5847

OceanBase数据库:从入门到精通全栈教程目录(含架构解析、性能调优与实战案例)

《OceanBase数据库专栏》全面解析蚂蚁集团自主研发的分布式关系型数据库,涵盖从基础到高级的完整知识体系。专栏分为入门篇、原理篇、使用篇等七大模块,包含35+篇深度文章,详细讲解OceanBase的高可用架构、Paxos协议、LSM树存储引擎等核心技术。特别提供MySQL/Oracle迁移指南、金融/电商场景实践案例,以及性能调优、运维监控等实战内容。适合开发者、DBA及架构师快速掌握OceanBase的核心特性和行业应用,助力企业实现数据库分布式转型。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 981

数据湖Iceberg介绍和使用(集成Hive、SparkSQL、FlinkSQL)

为了解决数据存储和计算引擎之间的适配的问题,Netflix开发了Iceberg,2018年11月16日进入Apache孵化器,2020 年5月19日从孵化器毕业,成为Apache的顶级项目。Iceberg是一个面向海量数据分析场景的开放表格式(Table Format)。表格式(Table Format)可以理解为元数据以及数据文件的一种组织方式,处于计算框架(Flink,Spark…)之下,数据文件之上。大数据领域发展至今已经经历了相当长时间的发展和探索,虽然大数据技术的出现和迭代降低了用户处理海量数据的

迷雾总会解 9920

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Flink + Iceberg打造流批一体的数据湖架构

对于数据湖架构来说,数据文件在HDFS的分布组织是由写入任务决定的,而对于分布式数仓来说,数据一般是通过JDBC写入,数据的存储组织方式是由数仓本身决定的,所以数仓可以按照对于查询更加友好的方式组织数据的存储,比如对数据文件定期compact到合适的大小或者对数据进行合理排序和分组,对于大规模的数据来说,数据的优化组织可以大大提高查询的效率。在这里需要做一个概念上的澄清:数据湖关注的是对原始数据高效、灵活的处理,DWD 及其他数仓分层是充分设计的数据模型,它并不符合我们对数据湖的定义和需求。

. 6797

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

实践数据湖iceberg 第四十二课(业界视野)业界的流批一体架构

了解iceberg的特性后,把视野放到行业,看看行业的湖仓一体架构上怎么的,作者主要分析:微视、爱奇艺、小米、网易严选的架构

spark_dev的博客 955

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【大数据实验系列】解决日志收集框架Flume使用HDFS的Sink类型,且使用codeC=gzip压缩方式时,Flume日志信息一直卡在Got brand-new Compressor[.gz]的问题

解决日志收集框架Flume使用HDFS的Sink类型,且使用codeC=gzip压缩方式时,Flume日志信息一直卡在Got brand-new Compressor[.gz]的问题

弗兰-随风小欢的博客 645

Hbase的使用压缩日志反应的问题

最近hbase的日志量提升到了几百MB,通过日志发现: 2013-12-24 11:05:08,307 INFO org.apache.hadoop.io.compress.CodecPool: Got brand-new decompressor 2013-12-24 11:05:09,283 INFO org.apache.hadoop.io.compress.CodecPool: Got

分布式应用与服务器架构专栏 4435

Hadoop文件压缩放到远程centos调试

文件压缩 1、准备代码 package com.cr.compress; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.io.compress.*; import org.apache.hado...

weixin_30839881的博客 215

Flink Iceberg 测试

本地搭建单节点Hadoop,根据官网示例进行Iceberg功能测试。 组件版本 组件 版本 Java 1.8.251 Scala 1.12.14 Flink 1.12.5 Iceberg 0.12.0 Hadoop 2.9.2 Hive .

L, there! 1100

Spark操作数据表入门【进行数据写入和读出】————附带详细步骤

文章目录0 准备1 使用脚本运行2 使用shell执行3 使用脚本执行的结果 0 准备 运行路径为:/usr/app/spark-2.4.7-bin-hadoop2.7 1 使用脚本运行 执行脚本运行下面的python文件: export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native export PATH=$PATH:$LD_LIBRARY_PATH bin/spark-submit --packages org.apache.spark:spark-sql-kafk

韩江雪de 小屋 1493

日均万亿条数据如何处理?爱奇艺实时计算平台这样做

1.爱奇艺 Flink 服务现状 爱奇艺从 2012 年开始开展大数据业务,一开始只有二十几个节点,主要是 MapReduce、Hive 等离线计算任务。到 2014 年左右上线了 Storm、Spark 实时计算服务,并随后发布了基于 Spark 的实时计算平台 Europa。2017 年开始引入 Flink,用来替代部分 Spark Streaming 场景,满足更低延迟的实时计算需求。在这之后,相继推出流式 SQL 引擎、实时分析平台、实时数据生产平台等一系列工具,用来提升实时计算开发效率。

weixin_42073629的博客 563

Iceberg读写Parquet文件Kerberos认证问题

使用Iceberg读取Kerberos认证的HDFS集群上的Parquet数据,导致的Kerberos认证问题

qq_20834437的博客 801
上一篇: 实践数据湖iceberg 第三十四课 基于数据湖icerberg的流批一体架构-流架构测试
下一篇: 实践数据湖iceberg 第三十六课 基于数据湖icerberg的流批一体架构--update mysql select from icberg语法是增量更新测试
*星星之火*
博客等级 码龄12年 3798粉丝 222原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值