加速数据湖:使用 gcs-analytics-core 优化 Apache Iceberg 和 Spark

TL;DR · AI 摘要
Google Cloud 发布 gcs-analytics-core,一个用于优化 Apache Iceberg 和 Spark 在 GCS 上性能的开源 Java 库,通过并行 I/O 和智能 Parquet 预取等技术提升读操作效率,TPC-DS 基准测试显示性能提升显著。
核心要点
- gcs-analytics-core 是一个开源 Java 库,用于优化 Apache Iceberg 和 Spark 在 Google Cloud Stora
- 核心优化包括并行 I/O 和智能 Parquet 预取,使读操作速度提升 30%-50%。
- 无需复杂配置即可自动启用优化,与现有 Iceberg 目录兼容。
结构提纲
按章节快速跳转。
数据工程师在管理多引擎兼容性和性能时面临挑战,gcs-analytics-core 提供统一优化方案。
一个位于分析引擎和 GCS SDK 之间的优化层,提供一致性能提升且无需特定框架调优。
包括并行 I/O 和智能 Parquet 预取,减少 I/O 时间和端到端执行时间。
与 Iceberg 1.11.0 及以上版本集成,自动启用性能优化,无需额外配置。
TPC-DS 基准测试显示,启用 gcs-analytics-core 后性能提升 30%-50%。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- gcs-analytics-core
- 核心功能
- 并行 I/O
- 智能 Parquet 预取
- 适用场景
- Apache Iceberg
- Apache Spark
- 其他引擎
- 性能提升
- I/O 时间减少 30%-50%
- 端到端执行时间缩短
金句 / Highlights
值得收藏与分享的关键句。
gcs-analytics-core 是一个开源 Java 库,旨在优化 Apache Iceberg 和 Spark 在 Google Cloud Storage 上的工作负载。
通过并行 I/O 和智能 Parquet 预取,I/O 时间减少 30%-50%,端到端执行时间显著缩短。
与 Iceberg 1.11.0 及以上版本兼容,自动启用优化,无需复杂配置。
使用 gcs-analytics-core 优化 Iceberg 和 Spark 工作负载
源 URL:https://cloud.google.com/blog/products/data-analytics/optimize-iceberg-and-spark-workloads-with-gcs-analytics-core/
发布时间:2026-06-02
Markdown 内容:
许多数据工程师花费大量时间管理兼容性并确保在多个分析引擎中获得最佳性能。为了解决这一痛点,我们很高兴宣布 gcs-analytics-core,这是一个新的开源 Java 库,旨在集中和加速针对 Google Cloud Storage (GCS) 的分析优化。
借助此工具,您可以灵活选择偏好的分析引擎,同时在 GCS 上实现高性能。gcs-analytics-core 库提供了对您当前在 GCS 上使用的各种分析引擎的优化支持,例如 Iceberg Spark 引擎,并计划在今年年底前扩展到其他分析引擎。
该库专为与 Apache Spark 等主要数据处理框架共享而构建,它整合并提升了 GCS 上分析工作负载的性能。从版本 1.11.0 开始,该库已原生集成到 Apache Iceberg Java 运行时中,改进了 Parquet 等列式格式的读取操作。
**什么是 gcs-analytics-core 库?**
gcs-analytics-core 库是一个集中的优化层,位于您的分析引擎(如 Apache Spark、Trino 和 Apache Hive)与底层 GCS Java SDK 之间。它拦截读取调用并注入性能增强功能,提供一致的体验,而无需进行特定于框架的调优。
对于 Apache Iceberg 用户,该库集成到 GCSFileIO 实现中,用并行化策略取代传统的顺序读取,从而最小化延迟并最大化吞吐量。
**关键技术优化**
该库引入了专门设计的优化措施,以减少 I/O 时间和端到端执行时间:
- 向量化 I/O(多线程):此功能通过在一个操作中并行获取多个数据范围来提高读取性能,从而减少 GCS 调用的开销。如果没有此功能,系统需要为每个数据范围发出单独的调用,这会增加操作数量以及每次请求的打开文件延迟。
- 智能 Parquet 预取:当读取 Parquet 数据时,分析引擎通常会首先读取文件的尾部,其中包含数据结构以及特定数据范围所在位置的信息。该库会自动以单个块(通常为 50KB–100KB)预取这些尾部数据,避免引擎反复向后查找以获取元数据时发生的多次网络调用。
**重点:Apache Iceberg 集成**
我们首次将该库的重大集成交付给 Apache Iceberg。使用 Iceberg 1.11.0 或更高版本的分析引擎可以利用 Iceberg 的 GCSFileIO 并从中受益于这些性能增强功能。
要将该库引入您的环境,请验证您的 Iceberg 目录是否配置为使用原生 GCS FileIO:
由于核心优化嵌入在更新后的 Iceberg 运行时和 GCS 连接器架构中,您将自动受益于 Parquet 尾部预取和多线程向量化读取——无需复杂的自定义调优。
您可以在 Apache Iceberg Issue #14326 中查看具体的集成细节。
**目录兼容性**
gcs-analytics-core 库与所有 Iceberg 目录兼容,包括 REST 目录、Hive 以及其他元数据管理系统。通过将性能优化与目录管理层解耦,该库提供了稳定的读取改进,而无需调整现有基础设施设置,从而可以在多样化的数据湖架构中扩展。
**使用 Spark 的 TPC-DS 性能基准测试**
为了验证这些改进,我们在一个使用 Apache Spark 集群的开放源代码环境中进行了端到端基准测试,该集群配置了 Iceberg 目录以使用 GCSFileIO 和 gcs-analytics-core 库。
基准测试利用行业标准的 TPC-DS 模式,覆盖不同大小的数据集(从 1GB 到 10TB),具体比较了新库的优化与默认 GCSFileIO 实现(使用顺序向量化读取)的效果。
通过缓解存储层的 I/O 瓶颈,计算引擎可以减少等待网络响应的时间(扫描时间),并将更多时间用于数据处理(执行时间)。
以下是启用 gcs-analytics-core 后的端到端 TPC-DS 基准测试结果,展示了性能提升的百分比:

| TPC-DS 模式大小 | 扫描时间改进 | 执行时间改进 | |---------------------|------------------|------------------| | 1 GB | 71.51% | 32.61% | | 10 GB | 48.48% | 18.94% | | 100 GB | 40.98% | 10.95% | | 1 TB | 35.86% | 3.38% | | 10 TB | 18.40% | 1.58% |
正如数据所示,所有数据集大小均表现出一致的改进。该库对 TPC-DS 中复杂的查询模式有效,直接降低了整体查询执行时间。
**开始使用**
在运行 Spark 工作负载之前,请确认满足以下要求和配置:
- 使用 Apache Iceberg Spark 运行时 1.11.0+ 和 iceberg-gcp-bundle 1.11.0+。
- 配置您的目录以使用 GCSFileIO。
- 启用 gcs-analytics-core 优化标志(
spark.sql.catalog.$CATALOG_NAME.gcs.analytics-core.enabled=true)。
- 启用向量化 I/O (
spark.sql.iceberg.vectorization.enabled=true) 以实现读取性能。
gcs-analytics-core 库是开源的,开发者可以贡献项目并探索源代码。我们的实现和微基准配置是仓库的一部分,可供参考用于您的贡献或验证。
- GitHub 仓库:GoogleCloudPlatform/gcs-analytics-core
- 文档: 查看设计文档以了解深入的架构细节。
我们希望听到您的体验。如果您在自己的数据集上进行测试,请随时在 GitHub 上打开一个问题或与社区分享您的结果。我们期待看到您如何在数据湖中利用这些优化。
发布于