使用gcs-analytics-core优化Iceberg和Spark工作负载

Google Cloud 发布了 gcs-analytics-core,一个开源 Java 库,专门优化 GCS 上的分析工作负载,当前主要面向 Iceberg Spark 引擎。它作为集中式优化层,位于引擎和 GCS Java SDK 之间,拦截读调用并注入性能增强,无需对每个引擎做单独调优。

核心优化有两个:Vectored I/O(线程化)——在单次操作中并行获取多个数据范围,减少 GCS 调用次数和打开文件延迟;Smart Parquet prefetching——自动在单块(50KB–100KB)中预取 Parquet 文件的页脚元数据,避免多次网络往返。对于 Iceberg 用户,集成在 GCSFileIO 实现中,从 Apache Iceberg 1.11.0 版本起原生可用,启用一个配置标志即可生效。

兼容所有 Iceberg 目录(REST、Hive 等),与目录管理层解耦。官方使用 TPC-DS 数据集(1GB 到 10TB)进行了端到端基准测试,对比默认顺序向量读实现。结果如下:
– 1GB:扫描时间提升 71.51%,执行时间提升 32.61%
– 10GB:扫描时间提升 48.48%,执行时间提升 18.94%
– 100GB:扫描时间提升 40.98%,执行时间提升 10.95%
– 1TB:扫描时间提升 35.86%,执行时间提升 3.38%
– 10TB:扫描时间提升 18.40%,执行时间提升 1.58%

所有规模均有一致改进,小数据集效果更显著。使用时需确保 Iceberg Spark runtime 1.11.0+、配置 GCSFileIO、开启 gcs-analytics-core 和向量化读取。库开源在 GitHub 仓库 GoogleCloudPlatform/gcs-analytics-core

Optimize Iceberg and Spark workloads with gcs-analytics-core

查看原文