数据湖(八):Iceberg 数据存储格式

数据湖存储解决方案之Iceberg Apache Iceberg 是由 Netflix 开发开源的,其于2018年11月16日进入 Apache 孵化器,是 Netflix 公司数据仓库基础。Apache Iceberg设计初衷是为了解决Hive离线数仓计算慢的问题,经过多年迭代已经发展成为构建数据湖服务的表格式标准。Iceberg 本质上是一种专为海量分析设计的表格式标准,可为主流计算引擎如 Presto、Spark 等提供高性能的读写和元数据管理能力。 阅读详情

Iceberg 数据存储格式

一、Iceberg 术语

  • data files(数据文件):

数据文件是 Apache Iceberg 表真实存储数据的文件,一般是在表的数据存储目录的 data 目录下,如果我们的文件格式选择的是 parquet,那么文件是以“.parquet”结尾,例如:

00000-0-root_20211212192602_8036d31b-9598-4e30-8e67-ce6c39f034da-job_1639237002345_0025-00001.parquet 就是一个数据文件。

Iceberg 每次更新会产生多个数据文件(data files)。

  • Snapshot(表快照):

快照代表一张表在某个时刻的状态。每个快照里面会列出表在某个时刻的所有 data files 列表。data files 是存储在不同的 manifest files 里面,manifest files 是存储在一个 Manifest list 文件里面,而一个 Manifest list 文件代表一个快照。

  • Manifest list(清单列表):

manifest list 是一个元数据文件,它列出构建表快照(Snapshot)的清单(Manifest file)。这个元数据文件中存储的是 Manifest file 列表,每个 Manifest file 占据一行。每行中存储了 Manifest file 的路径、其存储的数据文件(data files)的分区范围,增加了几个数文件、删除了几个数据文件等信息,这些信息可以用来在查询时提供过滤,加快速度。

  • Manifest file(清单文件):

Manifest file 也是一个元数据文件,它列出组成快照(snapshot)的数据文件(data files)的列表信息。每行都是每个数据文件的详细描述,包括数据文件的状态、文件路径、分区信息、列级别的统计信息(比如每列的最大最小值、空值数等)、文件的大小以及文件里面数据行数等信息。其中列级别的统计信息可以在扫描表数据时过滤掉不必要的文件。

Manifest file 是以 avro 格式进行存储的,以“.avro”后缀结尾,例如:8138fce4-40f7-41d7-82a5-922274d2abba-m0.avro。

二、表格式 Table Format

Apache Iceberg 作为一款数据湖解决方案,是一种用于大型分析数据集的开放表格式(Table Format),表格式可以理解为元数据及数据文件的一种组织方式。Iceberg 底层数据存储可以对接 HDFS,S3 文件系统,并支持多种文件格式,处于计算框架(Spark、Flink)之下,数据文件之上。

下面介绍下 Iceberg 底层文件组织方式,下图是 Iceberg 中表格式,s0、s1 代表的是表 Snapshot 信息,每个表示当前操作的一个快照,每次 commit 都会生成一个快照 Snapshot,每个 Snapshot 快照对应一个 manifest list 元数据文件,每个 manifest list 中包含多个 Manifest 元数据文件,manifest 中记录了当前操作生成数据所对应的文件地址,也就是 data file 的地址。

基于 snapshot 的管理方式,Iceberg 能够获取表历史版本数据、对表增量读取操作,data files 存储支持不同的文件格式,目前支持 parquet、ORC、Avro 格式。

关于 Iceberg 表数据底层组织详细信息,可关注后面得文章,会详细讲解的。

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

相关推荐

大数据的下一代变革-数据湖之Iceberg

1. 什么是数据湖 1.1 什么是数据湖 数据湖是一个集中式的存储库,允许以任意模式存储多个来源,所有结构化和非结构化数据,可以按照原样存储数据,无需对数据进行结构化处理,并运行不同类型的分析,对数据进行加工,例如:大数据处理,实时分析,机器学习,以指导做出更好的决策。 1.2 大数据为什么需要数据湖 当前基于Hive的离线数据仓库已经非常成熟,在传统的离线数据仓库中对记录级别的数据进行更新是非常麻烦的,需要对待更新的数据所属的整个分区,甚至时整个表进行全面覆盖才行,由于离线数仓多级逐层加工的架构设计,数据

wenqi 6182

浅谈iceberg的存储文件

这是我的第100篇原创文章【前言】上一篇文章介绍了如何通过java api对iceberg进行操作。这次我们来聊聊iceberg里的存储文件。iceberg中的持久化存储的文件可以简单的分为数据文件和元数据文件。数据文件就是存储数据记录的文件,而元数据文件又可以分为元数据描述文件、清单列表文件(manifest list),或者根据文件名又可以称为快照文件、以及清单文件(manifest file...

hncscwc的博客 1854

Apache Iceberg源码分析:数据存储格式

  Apache Iceberg作为一款新兴的数据湖解决方案在实现上高度抽象,在存储上能够对接当前主流的HDFS,S3文件系统并且支持多种文件存储格式,例如Parquet、ORC、AVRO。相较于Hudi、Delta与Spark的强耦合,Iceberg可以与多种计算引擎对接,目前社区已经支持Spark读写Iceberg、Impala/Hive查询Iceberg。本文基于Apache Iceberg 0.10.0,介绍Iceberg文件的组织方式以及不同文件的存储格式。 Iceberg Table Form

u012794915的博客 3366

Spark与Iceberg整合查询操作-查询快照,表历史,data files Manifests 查询快照,时间戳数据...

1.8.6 Spark与Iceberg整合查询操作 1.8.6.1 DataFrame API加载Iceberg中的数据 Spark操作Iceberg不仅可以使用SQL方式查询Iceberg中的数据,还可以使用DataFrame方式加载Iceberg表中的数据,可以通过spark.table(Iceberg表名)或者spark.read.format("iceberg").load("icebe...

weixin_48370579的博客 2255

使用 Iceberg on Kubernetes 打造新一代云原生数据湖

背景 大数据发展至今,按照 Google 2003年发布的《The Google File System》第一篇论文算起,已走过17个年头。可惜的是 Google 当时并没有开源其技术,“仅仅”是发表了三篇技术论文。所以回头看,只能算是揭开了大数据时代的帷幕。随着 Hadoop 的诞生,大数据进入了高速发展的时代,大数据的红利及商业价值也不断被释放。现今大数据存储和处理需求越来越多样化,在后 Hadoop 时代,如何构建一个统一的数据湖存储,并在其上进行多种形式的数据分析,成了企业构建大数据生态的一个重要方

吉小白的博客 2115

数据湖iceberg和spark集成

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

z1987865446的博客 1890

hive2.1.1+spark3.0+iceberg踩坑日记

1、sparkSQL3.0支持iceberg需要引入iceberg-spark3-runtime jar包 iceberg-spark3-runtime-0.11.1.jar 下载地址http://iceberg.apache.org/releases/ 2、修改conf/spark-default.conf文件添加默认iceberg catalog # hive metastore的版本设置为 2.1.1 spark.sql.hive.metastore.version=2...

qq_33476283的博客 4748

Apache Iceberg 深度解析:构建企业级数据湖的最佳实践

在数字经济时代,数据已成为企业最核心的战略资产之一。为了充分挖掘数据价值,企业纷纷构建数据湖,期望将海量、多源、异构的数据汇聚一处,进行统一存储和分析。数据可靠性差:缺乏强事务保证,容易出现数据不一致、部分写入或脏数据。元数据管理混乱:依赖于Hive Metastore的简单元数据模型,难以支持复杂的表结构演化和细粒度的数据组织。查询性能低下:基于目录的分区方式导致文件扫描范围过大,谓词下推能力有限。数据治理困难:缺乏有效的版本控制、行级权限和数据血缘追踪能力。Schema演化痛苦。

AI Python 编程之道的博客 990

iceberg存储结构详解

下图是Iceberg中表格式,s0、s1代表的是表Snapshot信息,每个表示当前操作的一个快照,每次commit都会生成一个快照Snapshot,每个Snapshot快照对应一个manifest list 元数据文件,每个manifest list 中包含多个Manifest元数据文件,manifest中记录了当前操作生成数据所对应的文件地址,也就是data file的地址。基于snapshot的管理方式,Iceberg能够获取表历史版本数据、对表增量读取操作,data files存储支持不同的文件格式

SunnyRivers 1487

数据湖(八):Iceberg数据存储格式

数据文件是Apache Iceberg表真实存储数据的文件,一般是在表的数据存储目录的data目录下,如果我们的文件格式选择的是parquet,那么文件是以“.parquet”结尾,例如:00000-0-root_20211212192602_8036d31b-9598-4e30-8e67-ce6c39f034da-job_1639237002345_0025-00001.parquet 就是一个数据文件。Iceberg每次更新会产生多个数据文件(data files)。快照代表一张表在某个时刻的状态。每个

Lansonli(蓝深李)的博客 1868

数据湖(十):Hive与Iceberg整合

Iceberg就是一种表格式,支持使用Hive对Iceberg进行读写操作,但是对Hive的版本有要求,如下:操作Hive 2.xHive 3.1.2CREATE EXTERNAL TABLE√√CREATE TABLE√√DROP TABLE√√SELECT√√INSERT INTO√√这里基于Hive3.1.2版本进行Hive操作Iceberg表讲解。想要使用Hive支持查询Iceberg表,首先需要下载“iceberg-hive-runtime.jar”,Hive通过该Jar可以加载Hive或者更新I

Lansonli(蓝深李)的博客 3088

数据湖 | 还不知道什么是Iceberg?一篇文章带你走进Iceberg的世界!

文章目录1. Iceberg是什么?2. 能力与优势2.1 Iceberg都有哪些功能?2.2 Iceberg能力验证3. Iceberg应用场景参考文档 近年来“数据湖”的概念在大数据领域如火如荼。delta、Apache Iceberg和Apache Hudi是市面上流行的三大数据湖解决方案,那到底这些方案是什么?又怎么使用?本文参考官网文档,带你快速入门iceberg,并从几个简单的例子出发,感受iceberg的能力。 1. Iceberg是什么? Iceberg定位在计算引擎之下,存储之上,通过特定

search-lemon的博客 2万+

小红书爬取实战指南

以上方案仅供技术学习参考,请确保遵守目标网站的服务条款和相关法律法规。

monk all the way 6920

数据湖之Iceberg

Apache Iceberg 是一个用于大规模数据集的开源表格式库,旨在解决传统数据湖在管理大型数据集时遇到的挑战。它由Netflix创建,并捐赠给了Apache软件基金会。Iceberg旨在提供一种高效、灵活且可扩展的方式来处理海量数据,同时保持强大的事务性保证。

youziguo的专栏 2054

【亲测好用】解决Windows系统Vscode终端无法使用yarn报错无法加载文件

我明明使用`npm i -g yarn ` 安装成功了 甚至在文件夹处 CMD 也可以看到yarn 的版本 甚至在Vscode中又重新安装了一遍yarn 为什么还是报错呢?

Aeporn的博客 888

STM32与FreeRTOS:基于TIM6的高精度系统时间获取实践

本文详细介绍了在STM32与FreeRTOS环境下,基于TIM6定时器实现高精度系统时间获取的实践方法。通过复用FreeRTOS的TIM6硬件资源,开发者可以高效获取毫秒级和微秒级系统时间,同时解决时间溢出和中断处理等关键问题。文章还提供了CubeMX配置技巧、代码实现及性能优化建议,适用于嵌入式系统开发中的精确时间管理需求。

weixin_29169505的博客 357

数据湖技术 Iceberg 的探索与实践

本文资料来自2020年9月5日由快手技术团队主办的快手大数据平台架构技术交流会,分享者邵赛赛,腾讯数据平台部数据湖内核技术负责人,资深大数据工程师,Apache Spark PMC me...

过往记忆大数据 7142

四阶龙格库塔法求解一次常微分方程组(python实现)

之前在博客发布了关于使用四阶龙格库塔方法求解一次常微分方程组的文章,由于代码缺少具体的验证,部分朋友可能存在疑问,因此这里打算再重新写一篇博客来验证一下程序的正确性,另外,这里是使用python语言来实现的。

HelloWorldTM的博客 8542

数据湖YYDS! Flink+IceBerg实时数据湖实践

点击上方蓝色字体,选择“设为星标”回复”面试“获取更多惊喜数据湖的前世今生互联网技术发展的当下,数据是各大公司最宝贵的资源之一已经是不争的事实。收据的收集、存储和分析已经成为科技公司最重要...

微信搜:import_bigdata,大数据领域硬核原创作者 1727

【Seurat绘图进阶】从参数调优到美学定制:解锁DimPlot与FeaturePlot的隐藏技巧

本文深入探讨了Seurat包中DimPlot与FeaturePlot的进阶使用技巧,旨在解决单细胞数据可视化中的常见痛点。通过参数调优(如order、shuffle、raster)、颜色美学定制(使用RColorBrewer、viridis配色)以及性能优化(栅格化处理),并结合scCustomize包与patchwork排版,帮助用户将基础图表提升为信息清晰、可直接用于论文发表的出版级可视化结果。

lake5的博客 628

一定能解决ROS系统 rosdep update超时问题de简单方法

rosdep update命令使用 1.首先将下面仓库的内容clone到本地 git clone https://github.com/ros/rosdistro.git 记录rosdistro存放地址,例如/home/gec/rosdistro 如果是自己的改成/home/user/rosdistro,其中user表示用户名 2.修改/usr/lib/python2/dist-packages/rosdep2/rep3.py文件 cd /usr/lib/python2/dist-packages/ros

努力是明天快乐的源泉 5万+

Apache Iceberg 与 Apache Hudi:数据湖领域的双雄对决

在数据存储和处理不断发展的领域中,数据湖仓的概念已经崭露头角,成为了一种变革性的力量。数据湖仓结合了数据仓库和数据湖的最佳元素,提供了一个统一的平台,支持数据科学、商业智能、人工智能/机器学习以及临时报告等多种关键功能。这种创新的方法不仅促进了实时分析,还显著降低了平台成本,增强了数据治理,并加速了用例的实现。数据存储和处理的演变催生了被称为数据湖仓的现代分析平台。这些平台旨在解决传统架构的局限性,提供更强大的功能来管理和分析大量多样化的数据类型。

u013257767的博客 1465

ZYNQ PS裸机开发RS485

RS485 是一种通用的通信标准,广泛用于数据采集和控制应用中。它的主要优点之一是它允许将多个 RS485 设备放在同一条总线上,这使得多个节点可以相互连接。RS-485是美国电子工业协会(EIA)在1983年批准了一个新的平衡传输标准(balanced transmission standard),EIA一开始将RS(Recommended Standard)做为标准的前缀,不过后来为了便于识别标准的来源,已将RS改为EIA/TIA。

baidu_34971492的博客 830

数据湖08:Apache Iceberg原理和功能介绍

Iceberg是一种开放的数据湖表格式。可以简单理解为是基于计算层(Flink , Spark)和存储层(ORC,Parqurt,Avro)的一个中间层,用Flink或者Spark将数据写入Iceberg,然后再通过其他方式来读取这个表,比如Spark,Flink,Presto等。...............

渡江客涂鸦板 8992

复现CVE-2014-085(Apache ZooKeeper 未授权访问漏洞)

默认安装配置完的zookeeper允许未授权访问,管理员未配置访问控制列表(ACL)。导致攻击者可以在默认开放的2181端口下通过执行envi命令获得大量敏感信息(系统名称、java环境)导致任意用户可以在网络不受限的情况下进行未授权访问读取数据。

记录并分享学习安全的知识点.. 2175

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Apache Iceberg:现代数据湖存储格式的未来

Iceberg 是一种高效的表格式,旨在提供可靠的数据存储和管理功能。它支持 ACID 事务、时间旅行、快照隔离、模式演化等特性,使其在处理大规模数据集时更加可靠和高效。主要特性:ACID 事务:支持原子性、一致性、隔离性和持久性,确保数据的可靠性和一致性。时间旅行:允许用户查看和查询数据的历史版本,非常适合数据审计和回溯分析。快照隔离:不同的查询可以在相互隔离的快照上运行,避免读写冲突。模式演化:支持无停机的模式更改,如添加、删除或重命名列。高效的元数据管理。

weixin_48313678的博客 1451

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: 数据湖(七):Iceberg 概念及回顾什么是数据湖
下一篇: 数据湖(九):Iceberg 特点详述和数据类型
wrr-cat
博客等级 码龄9年 128粉丝 302原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值