资讯动态

Apache Iceberg 版本发布指南:Runtime JAR 获取、依赖接入与各版本变更详解

发布时间:2026/10/14 17:36:35 来源:尧图企业网站定制
数据湖湖仓一体大数据【免费下载链接】icebergApache Iceberg项目地址https://gitcode.com/gh_mirrors/iceberg5/iceberg点击查看免费下载本文基于 Apache Iceberg 官方文档 releases.md 展开梳理 Iceberg 的发布体系如何为 Spark、Flink、Hive 选择正确的 runtime JAR如何通过 Gradle/Maven 引入 Iceberg 依赖以及从 1.5.x 到早期 0.x 版本的主要变更脉络。同时结合当前仓库的构建脚本settings.gradle、deploy.gradle、build.gradle与版本读取实现说明版本号是如何生成、如何随构建分发的帮助读者在实际接入时做出正确的版本选择。一、当前版本与下载方式当前仓库中标注的最新稳定版本为1.5.2见 site/mkdocs.yml 中的icebergVersion: 1.5.2该值由 MkDocs 的 macros 插件注入到文档的{{ icebergVersion }}占位符中。官方 Releases 页面提供三类产物源码包apache-iceberg-version.tar.gz附带 GPG 签名.asc与sha512校验文件发布在 Apache 官方下载镜像站各引擎的 runtime JAR面向 Spark 3.3 / 3.4 / 3.5Scala 2.12 与 2.13 双版本、Flink 1.16 / 1.17 / 1.18、Hive发布在 Maven CentralgroupId 为org.apache.iceberg云厂商 bundle JARiceberg-aws-bundle、iceberg-gcp-bundle、iceberg-azure-bundle将对应云的 SDK 依赖一并打包避免手动对齐依赖版本。1.1 Runtime JAR 命名规则从 settings.gradle 的模块声明可以清楚看到 runtime 构件的命名规律iceberg-spark-runtime-spark版本_scala版本 # 如 iceberg-spark-runtime-3.5_2.12 iceberg-flink-runtime-flink版本 # 如 iceberg-flink-runtime-1.18 iceberg-hive-runtime # Hive 2/3 共用当前仓库的构建矩阵定义在 gradle.properties 中可直接印证下载页列出的版本组合systemProp.knownSparkVersions3.3,3.4,3.5 systemProp.knownFlinkVersions1.17,1.18,1.19 systemProp.knownHiveVersions2,3 systemProp.knownScalaVersions2.12,2.13注意两个要点Flink 1.19 是源码仓库中新增的已知版本默认构建版本为defaultFlinkVersions1.19因此该组合的 runtime JAR 会在后续版本中发布文档下载页列出的 Flink 1.16 属于历史兼容产物。多引擎的“版本矩阵”策略详见 multi-engine-support.mdIceberg 为每个受支持的引擎版本单独维护一套代码如spark/v3.5、flink/v1.19并单独打 runtime 包因此必须让 runtime JAR 的版本号与引擎大版本严格匹配不能拿 Spark 3.5 的包跑在 Spark 3.4 上。1.2 各引擎的接入方式文档给出的操作原则Spark / Flink下载对应引擎版本的 runtime JAR放入引擎安装目录的jars文件夹如spark-jars/或 Flink 的lib/Hive 2 / Hive 3下载iceberg-hive-runtimeJAR在 Hive CLI 中通过ADD JAR命令加载。这与 deploy.gradle 中的发布配置一致除 BOM 与 open-api 模块外每个子模块都会发布jar、sources、javadoc与tests四种构件runtime 模块如flink-runtime-1.19、spark-runtime-3.5_2.12通过 shadow 打包将依赖内联这就是“一个 JAR 丢进 lib 即可用”的原因。二、通过构建工具引入 Iceberg 依赖2.1 Gradle在build.gradle中声明对iceberg-core的依赖dependencies { compile org.apache.iceberg:iceberg-core:version }如需 Parquet 文件格式支持还应引入iceberg-parquet。若涉及云存储建议同时引入对应的 bundle 构件iceberg-aws-bundle/iceberg-gcp-bundle/iceberg-azure-bundle避免手动对齐各云 SDK 的版本。2.2 Maven在pom.xml中声明dependencies dependency groupIdorg.apache.iceberg/groupId artifactIdiceberg-core/artifactId versionversion/version /dependency /dependencies其中version替换为具体版本号如1.5.2。groupId 为org.apache.iceberg可由 deploy.gradle 中publishing块的groupId org.apache.iceberg与 POM 模板得到确认。2.3 版本号的构建期来源Iceberg 自身的版本号并非硬编码而是动态解析的。build.gradle 中的getProjectVersion()逻辑为若仓库根目录存在version.txt直接读取其中的版本号正式发版时由发布流程写入否则通过gradle-git-version插件取最近的apache-iceberg-*tag例如0.13.0-2-g805400f0并用正则抽取MAJOR.MINOR.PATCH部分对主干开发构建会将 MINOR 位加一并拼接-SNAPSHOT如从1.5.2得到1.6.0-SNAPSHOT。也就是说从源码构建产物上看到的x.y.z-SNAPSHOT意味着它是相对x.(y-1).z这个 tag 的后续开发版本生产使用应选用 Maven Central 上的正式 release 版本。三、发布产物如何生成源码包与 Maven 构件3.1 源码发布候选包RCdev/source-release.sh 用于生成发布候选包并起草发布公告邮件用法usage: source-release.sh [-k key_id] [-g git_remote] -v version_num -r rc_num -v 发布版本号 -r Release candidate 编号 -k 指定 GPG 签名密钥默认用 GPG 默认密钥 -g 指定 Git remote 名默认 apache -d 打开 DEBUG 输出脚本会校验目标 remote 是否存在、检查tmp工作目录随后生成带签名与校验和的 RC 源码包——这正是下载页中“signature / sha512”文件对应的来源。3.2 Maven 构件发布dev/stage-binaries.sh 展示了完整的构件发布流程它先以 Scala 2.12 构建全部引擎版本./gradlew -Prelease -DscalaVersion2.12 \ -DflinkVersions1.17,1.18,1.19 \ -DsparkVersions3.3,3.4,3.5 \ -DhiveVersions2,3 \ publishApachePublicationToMavenRepository然后单独为 Scala 2.13 发布 Spark 3.3/3.4/3.5 的三个模块spark、spark-extensions、spark-runtime。脚本注释说明Flink 尚未支持 2.13Hive 构件与 Scala 无关。这段脚本与 settings.gradle 中按sparkVersions、scalaVersion动态 include 子模块的机制完全对应——settings.gradle会校验传入的引擎版本必须在known*Versions白名单内否则会抛出Found unsupported Spark versions之类的异常。此外有两点值得注意deploy.gradle 强制要求发布构建必须使用 Java 8保证产物的最低运行时兼容性所有构件含 sources、javadoc、tests都会内嵌LICENSE、NOTICE与构建信息文件符合 ASF 发布规范。3.3 运行时版本自描述IcebergBuild构建期写入的版本信息在运行时也可读取。IcebergBuild 从 classpath 的/iceberg-build.properties由构建期buildInfo任务从 git 生成见 build.gradle加载git.commit.id、git.branch、git.build.version、git.tags等属性并提供gitCommitId()、version()等静态方法。因此通过 API 也能确认当前加载的 Iceberg 构建出自哪个 commit便于排障时核对“文档版本 ↔ 运行版本 ↔ 引擎版本”三者是否一致。iceberg-build.properties的 key 集合在 build.gradle 中定义。四、版本变更总览继承官方 Release Notes以下各节完整保留 releases.md 中官方发布说明的核心内容。4.1 1.5.2 与 1.5.12024 年补丁版本1.5.22024-05-09 发布变更内容与 1.5.1 相同。1.5.1 的 Spark runtime 构件存在问题——部分构件被以错误的 Scala 版本构建强烈建议所有使用 1.5.1 的系统升级到 1.5.2。1.5.12024-04-25 发布的修复清单Core修复 FileIO 回归读取 manifests 时多发出一次 head 请求#10114REST Client 将 502、504 标记为可重试状态码#10113修复 JDBC Catalog 从 V0 迁移到 V1 schema 时的表提交问题#10152修复 JDBC Catalog 命名空间 SQL 的转义字符使其兼容 Postgres、MySQL 等不同后端#10167Spark修复 Spark 3.5 CoW 行级命令的系统函数下推#9873修复 Spark 3.4 CoW 行级命令的系统函数下推#101194.2 1.5.02024-03-11 发布1.5.0 引入了大量新特性按模块归纳API扩展 FileIO 并新增EncryptingFileIO#9592TableMetadata中跟踪 partition statistics#8502视图新增sqlForAPI用于按方言解析 SQL 表示#9247CoreREST catalog 支持 view#7913JDBC catalog 支持 view#9487新增 glue、jdbc、nessie 等 catalog type#9647支持 Avro 文件 AES GCM 流加密#9436、StandardEncryptionManager#9277REST catalog 表级 session 缓存#8920支持 view 元数据压缩#8552planning 之后启用列统计过滤#8803Spark移除 Spark 3.2 支持#9295Spark 3.4/3.5 通过 SQL 支持 view#9423、#9421、#9343 等支持 executor 缓存本地性#9563、delete manifest 重写#9020、加密输出文件#9435从 Iceberg scan metrics 输出 Spark UI 指标#8717add_filesprocedure 并行读取文件#9274支持 file 与 partition 粒度的 delete#9384Flink移除 Flink 1.15 支持新增 Flink 1.18#9211IcebergSource可发出 watermark#8553新增 watermark 读取选项#9346Parquetrow group filter 支持 INT96 列读取#8988新增 unsafe Parquet ID fallback 系统配置#9324Kafka-Connect完成初始项目搭建与事件数据结构#8701含数据写入器与转换器的事件 Sink connector#9466——对应仓库中的kafka-connect/目录kafka-connect-events与kafka-connect两个子模块Spec新增 partition stats 规范#7105、纳秒时间戳类型#8683、多参数 transform#8579Vendor IntegrationsAWS 支持 Glue 表描述设置#9530、S3 Access Grants#9385Azure 新增支持 ADLSv2 的 FileIO#8303并让ADLSFileIO实现DelegateFileIO#8563Nessie 支持 view#8909、从 URI 推断 API 版本#9459依赖升级Nessie 0.77.1、ORC 1.9.2、Arrow 15.0.0、AWS Java SDK 2.24.5、Azure Java SDK 1.2.20、Google Cloud 26.28.0注意启用 JDBC catalog 的 view 支持需在 catalog properties 中配置jdbc.schema-version为V1。4.3 1.4.x 系列2023 年 Q41.4.32023-12-27主要修复事务重试时因冲突 manifest 导致的文件丢失问题使用事务的用户建议升级Corepartitions 表只扫描 live entries#9197修复事务重试中冲突 manifest 合并导致文件丢失#9337JDBC Catalog修复含特殊字符时的namespaceExists检查#9291Core事务中过期的 snapshot 文件应被删除#9223修复事务中丢失 delete files#93561.4.22023-11-02补丁版本修复 split offset 被判定无效时应忽略 split offsets 数组的残余场景#8925。1.4.12023-10-23Coremanifest 中不再使用懒加载 split offset 列表#8834最后一个 split offset 超出文件长度时忽略 split offsets#8860AWS避免使用与生命周期管理不兼容的静态全局 credentials provider#8677Flink回滚 bucket 列的默认自定义 partitioner#88481.4.02023-10-04是功能大版本API绑定表达式消毒#8149移除DefaultCounter溢出检查以解决性能问题#8297支持基于 branch 的增量扫描#5984DeleteFiles新增校验文件存在性的 API#8525Core 默认行为变化升级需关注新表默认使用 V2 格式#8381新表默认使用zstd压缩的 Parquet#8593新增严格的元数据清理模式并默认开启#8397、#8599Core 性能与功能避免提交时生成超大 manifest#6335无序 position deletes 写入器#7692DeleteFileIndex多项优化#8157、#8278通过环境变量设置系统级属性#5659ContentFile/FileScanTask的 JSON parser#6934REST 多表提交 API#7569、#7741REST client 默认指数退避重试#8366REST session catalog 支持 register table#6512partitions 元数据表新增 last-updated timestamp、snapshot ID 与总数据量#7581、#7920ResolvingFileIO支持批量操作#7976key metadata 的 Avro 格式#6450AES GCM 加密流#3231Spark新增 Spark 3.5 支持DELETE/UPDATE/MERGE 代码移交 Spark 内核、MERGE 支持WHEN NOT MATCHED BY SOURCE、MoR 列裁剪、可调 advisory partition size移除 Spark 3.1 支持Spark 3.2 进入废弃Spark 3.4/3.5 MoR 向量化读取#8466分布式 planning#8123V2 filter 系统函数下推#7886fanout position delta 写入器#7703Spark 3.5 未排序表默认 fanout writer#8621compaction 支持每文件多个 shuffle 分区#7897CDC carryover 行跨 snapshot 输出净变化#7326Spark SQL UI 展示读指标#7447按集群并行度调整 split size#7714新增fast_forwardprocedure#8081Flink按文件序列号排序 splits#7661bucket 分区自定义 partitioner#7161数据统计 coordinator#7360支持alter table column#7628Parquet / ORC读写构建器支持加密配置#2639deletes 跳过 bloom filter 写入#7617codec 按名称与级别缓存#8182VendorGCPGCSInputStream单字节读修复、OAuth2、前缀/批量操作、range read、gcp-bundle JAR#8071、#8073、#8168、#8231、#8301AWS bundle JAR#8261、S3FileIO存储类配置#8154、S3 签名规范允许可选 body#8361Azure ADLSv2 FileIO#8303依赖Nessie 0.71.0、ORC 1.9.1、Arrow 12.0.1、AWS SDK 2.20.1314.4 1.3.x 系列2023 年中1.3.12023-07-25元数据解析器接受current-snapshot-id、properties、snapshots为 null#8064修复 HiveCatalog 检查锁状态失败时删除元数据的问题#7931Spark 修复 RewritePositionDeleteFiles 对特定分区类型的失败#8059、RewriteDataFiles 提交超时的并发边界问题#7933、WAP 分支的分区级 DELETE#7900FlinkCatalog 创建时不再创建默认 database#8039。1.3.02023-05-30CoreContentFile暴露 file/data sequence number#7555对象存储布局位密度优化#7128delete files 存储 split offsets#7011entries 表可读 metrics#7539Parquet Decimal 向量化读优化#3249Parquet INT96 时间戳向量化读#6962ORC row/batch reader 支持 selected vector#7197V1 表支持删除旧分区 spec 列#7398SparkSpark 3.4 初始支持移除 Spark 2.4Spark 3.4 存储分区连接#7424、TimestampNTZ#7553、写倾斜处理#7520、小任务合并#7532、分布与排序增强#7637position delete 重写 action/procedure#7389、#7572Structured Streaming 速率限制#4479UUID 读写#7399并发 compaction 默认开启#6907FlinkFlink 1.17 初始支持移除 Flink 1.14数据统计算子指导 smart shuffle#6382、#7269SQL hint 暴露写并行度#7039行级过滤#7109AWSApache HTTP client 成为默认客户端#7119、修复 token 刷新调度#7270、启用远程签名时禁用本地凭证#72304.5 1.2.x 系列2023 年 Q1-Q21.2.12023-04-11REST refs-only load 的 previous locations 修复#7284rewrite manifests 广播表而非 FileIO#7263AWSAuthSession缓存静态化#7289、S3 输入流非 EOS 关闭时 abort#7262、DefaultAwsClientFactory支持 S3 credentials provider#7066。1.2.02023-03-20CoreAES GCM 加密流规范#5432Delta Lake 表转换 Iceberg 支持#6449、#6880对应仓库delta-lake/模块position_deletes元数据表#6365、#6716scan/commit metrics reporter 可插拔#6404、#6246所有操作支持 branch 提交#4926、#5010ORC 读写支持 FileIO#6293actions 尽量使用 bulk delete#6682Puffin 规范 snapshot ID 定义更新以支持统计文件复用#6272Sparkchangelog 表时间范围查询#6350、v1 表 changelog view procedure#6012、存储分区连接#6371、min/max/count聚合下推#6622、DELETE 尽量走 metadata-only 更新#6899、通过表标识与VERSION AS OF语法读写 branch/tag#6717、#6575、#6965、#7050、branch/tag 的 DDL SQL 扩展#6638、#6637、#6752、#6807、years/months/days/hourstransform UDF#6207 等Flink元数据表支持#6222、AvroGenericRecord读写#6557、#6584、branch/tag 读写#6660、#5029、流读限流#6299、同 job 多 sink 写同一表#6528Vendor新增 Snowflake catalog 集成对应仓库snowflake/模块REST catalog 支持 AWS sigV4 认证#6951AWS S3 远程签名#6169 等Glue catalog 默认跳过表版本归档#6919、不再强制 warehouse location#65864.6 1.1.02022-11-28废弃 1.0 之前的若干 API 并新增特性CorePuffin 统计进入 Table API#4945Table scan reporting#5268ManifestEntry增加 file sequence number#6002所有 catalog 支持 register table此前仅 Hive#5037branch 上支持 merge append 与 delete files#5618ExpireSnapshots 的 FileCleanupStrategy 改进#5669SnapshotProducer支持 branch 写入#4926Spark聚合表达式支持#5961SparkChangelogTable查询 changelog#5740移除 Spark 3.0 支持FlinkFLIP-27 reader 可在 SQL 中使用#5318新增 Flink 1.16移除 Flink 1.13依赖AWS SDK 2.17.257、Nessie 0.44、ORC 1.8.0并支持 row group bloom filter 设置4.7 1.0.0 与语义化版本承诺1.0.0 的意义正式保证 Iceberg API 的稳定性。API 自早期版本以来基本稳定、并与众多引擎集成但此前以0.y.z版本号发布意味着可能破坏性变更。从 1.0.0 起公共 API 模块iceberg-api遵循语义化版本semver。该版本基于 0.14.1仅含重要修复metrics 列上限提升到 100#5933因 CVE-2022-33891 升级 Spark 补丁版本#5292Spark runtime JAR 排除 Scala#58844.8 0.14.x 系列2022 年0.14.1汇集 0.14.x 全部修复——schema 合并 ID 分配#5395、含中间事务 snapshot 的 snapshot log#5568、BaseTaskWriter异常处理#5683、无元数据文件时删表#5510、REST 的CommitStateUnknownException处理#5694、Parquet 重写 metadata action 统计#5691、提前关闭 zstd 输入流避免内存压力#5681、FileIO 的 Kryo 序列化修复#5437等。0.14.02022-07-16亮点扫描 planning 与 Spark 查询的多项性能改进新增基于 change-based commit 的通用 REST catalog client在服务器侧解决提交冲突Spark 3.3 支持含 SQL 时间旅行AS OF语法Spark 3.2 支持 Scala 2.13Spark 3.2 的 MERGE/UPDATE merge-on-readzorder 分区重写Flink 1.15 支持移除 1.12Puffin 规范与实现大型统计/索引 blob 格式如 Theta sketch、bloom filter增量消费新接口IncrementalAppendScan与IncrementalChangelogScan即仓库api/中的 IncrementalAppendScan.java 与 IncrementalChangelogScan.javaFileIO 接口新增批量操作与 ranged reads新增元数据表data_files、delete_files、all_delete_files、all_files核心特性还包括IcebergBuild暴露版本与构建信息即本文第三节描述的机制、二进制兼容性检查进入构建、data_files/delete_files等新元数据表、ManageSnapshots 支持事务化多操作与 branch/tag、ReplacePartitions/OverwriteFiles支持串行化隔离、REST catalog 客户端change-based 协议、snapshot referencestags/branches、Zstd 压缩的 Avro、column metrics 默认在 32 列后关闭、Parquet 向量化读默认开启等。4.9 更早版本要点0.13.x 及以前0.13.2 / 0.13.1 / 0.13.02022 年上半年0.13.2 修复 OOM 导致表损坏#4673、格式升级 v2 后 row delta delete 丢失#4514、冲突事务被忽略#4464等正确性问题0.13.1 修复 Spark 3.2 merge 条件谓词下推#4023与 Flink 多 committer manifest 位置冲突#39860.13.0 引入 catalog 缓存过期cache.expiration-interval-ms、表注册#3851、Hadoop catalog 锁管理器#3663、GCS/OSS/MinIO 等 FileIO、ResolvingFileIO按路径 scheme 分派#3593、Spark 3.2 与 MoR DELETE、rewrite_data_files的排序优化与 delete 合并、Hive 列表跳过非 Iceberg 表list-all-tables、ORC 写 delete 文件等。该版本还敲定了 Spark/Flink/Hive 的长期支持策略对应 multi-engine-support.md0.12.x2021 年末0.12.1 修复 Flink CDC 流写入在 snapshot 过期后的校验失败、串行化隔离校验#3195、#3199等0.12.0 引入 JDBC/DynamoDB catalog、行标识符Flink upsert 前提、更灵活的 Spark compaction action、format-version2建表/升级、Flink SQL 主键、Hive 表级 catalog、Spark 3.1/UPDATE/add_files等并且 Iceberg 社区投票通过了格式规范 v20.11.x / 0.10.02021 年0.11.0 的 Core API 支持 partition spec 与 sort order 演化Spark 3 支持 MERGE INTO/DELETE FROM 等 SQL 扩展新增 AWS 模块Glue catalog S3 FileIO与 Nessie 模块0.10.0 带来 format v2 支持行级操作、Flink 批读集成与 Hive 实验性读取iceberg-hive模块更名为iceberg-hive-metastore0.9.x / 0.8.0 / 0.7.02020-2021 年仅提供源码包与 Spark 2.4 / Spark 3.0 runtime JAR 的下载条目其中 0.8.0 与 0.7.0 仍带incubating后缀孵化器时期五、版本选择与升级建议综合以上发布记录与仓库构建配置实际接入时建议以 1.5.2 为当前推荐版本1.5.1 存在 Spark runtime Scala 版本构建错误1.5.2 是其修复版本运行时核对版本三要素Iceberg 库版本、引擎Spark/Flink/Hive版本、Scala 版本。runtime JAR 的命名即包含后两者iceberg-spark-runtime-3.5_2.12仓库 gradle.properties 中的known*Versions白名单是当前构建所支持的完整矩阵关注默认行为变化的版本1.4.0 起新表默认 V2 格式与 zstd Parquet、严格元数据清理默认开启1.5.0 移除了 Spark 3.2 支持——升级跨这些版本时应核对表格式与引擎支持矩阵事务重度用户建议确认已升级到 1.4.3以获得事务重试 manifest 冲突修复生产部署应使用正式 release 构件从源码构建得到的-SNAPSHOT版本由最近 tag 推导见 build.gradle仅用于开发验证且官方发布构建要求 Java 8deploy.gradle可据此判断构件的最低 Java 兼容线。赞分享数据湖湖仓一体大数据【免费下载链接】icebergApache Iceberg项目地址https://gitcode.com/gh_mirrors/iceberg5/iceberg点击查看免费下载相关推荐Apache Iceberg 多引擎支持详解Spark / Flink / Hive 版本生命周期与 Runtime Jar 实战指南Apache Iceberg 多引擎支持详解Spark / Flink / Hive 版本生命周期与 Runtime Jar 实战指南 Apache Iceb数据湖大数据数据存储vLLM依赖管理requirements.txt各版本详解vLLM依赖管理requirements.txt各版本详解 引言LLM部署的依赖困境 你是否曾在部署大语言模型 LLM 时遭遇过CUDA版本不匹配、库人工智能大模型模型推理服务推理引擎本地部署Apache SeaTunnel Shade 机制指南包重定位 JAR 的版本约定、依赖消费与发布流程Apache SeaTunnel Shade 机制指南包重定位 JAR 的版本约定、依赖消费与发布流程 本文基于 Apache SeaTunnel 开发者文档数据集成ETL大数据批处理流处理变更数据捕获创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑