
用Google Cloud Lakehouse查询Databricks Iceberg表

企业通常在同一个数据平台上混合使用Databricks跑重型Spark作业,用BigQuery支撑高并发分析。过去打通这两套环境,往往要搭复杂的管道把数据从一个地方复制到另一个地方,代价是存储成本上升、延迟增加、安全管控被切碎。Google Cloud的Lakehouse方案改变了这个做法:BigQuery可以直接查询Databricks管理的Apache Iceberg表,不需要复制数据。
Managed Iceberg表会自动生成兼容Iceberg的元数据和Native Delta日志。数据工程团队用Databricks把Parquet文件写到GCS,只存一份;Lakehouse直接读Iceberg元数据,用BigQuery的向量化引擎访问GCS里的开放格式文件。新的变更会在Lakehouse下一次元数据刷新后可见,最快每5分钟一次。这种零拷贝方式让BigQuery读到的就是Databricks写出的文件。
GCS只是其中一个例子。Lakehouse的联邦能力可以扩展到Amazon S3和Azure Blob Storage。通过Open Apache Iceberg REST Catalog配合跨云连接,BigQuery可以跨云查数据而不用搬动数据。每个联邦目录放在你指定的Google Cloud区域,最好靠近数据。远程云出站流量费依然存在,但Cross-Cloud Interconnect(AWS)和Lakehouse缓存可以降低。
Lakehouse框架还支持跨引擎的读写互操作。因为底层是开放Iceberg标准,数据团队可以直接在BigQuery里执行多语句SQL。安全方面采用委托访问:管理员配置BigQuery Cloud Resource Connection,用服务账户管理GCS的IAM权限;给用户授予Lakehouse表实体的访问权限后,BigQuery可以在外部Iceberg表上执行行级、列级安全和动态数据脱敏,而Databricks继续负责写入。目录联邦方面,Databricks Unity Catalog作为中心元数据层,BigQuery管理员建立Lakehouse runtime catalog并连接。查询时Lakehouse联系Unity Catalog获取表状态,通过凭证发放(credential vending)签发短期token,让BigQuery临时读取GCS。
BigQuery利用Iceberg元数据做查询规划,只读需要的文件。Iceberg的hidden partitioning允许按逻辑列(如时间戳)过滤,而不用知道目录怎么摆。注意Databricks管理的Iceberg表不支持partition transforms,Databricks官方推荐用liquid clustering。标准WHERE子句中的过滤条件可以让BigQuery通过Iceberg manifests跳过不可能匹配的分区。manifest还保留列级统计边界,BigQuery能立即跳过无关的manifest记录和Parquet文件,只扫描必要字节范围,由此减少slot消耗和存储扫描成本。
Iceberg manifests已经标识了要读哪些文件,所以BigQuery不需要为Iceberg表做元数据缓存。对于跨云表(如S3上的数据),Lakehouse caching(Preview)会把取回的数据块留在Google Cloud,重复查询时本地读取。每次查询计划时BigQuery直接读manifest文件,动态分区裁剪绕过无关文件,减少运行时间和扫描字节数。
湖仓需要主动维护,否则性能会退化。频繁写入、持续摄入和流式作业会产生成千上万个小Parquet文件,这会让BigQuery建大量GCS连接、读大量元数据,拖慢向量化执行。运行Iceberg compaction可以解决:Databricks通过Liquid Clustering或原生表管理工具自动整理布局;手动压缩可用OPTIMIZE,把散落文件合并成通常256MB到512MB的较大块,提升扫描吞吐。binpack方式优先平衡总文件大小,排序策略则按特定列组织顺序。
每个事务、修改、压缩都会产生新快照,旧文件逐渐变成孤儿文件。它们虽用于时间旅行,但会累积GCS费用。Databricks的VACUUM能扫描并清除废弃文件。标准配置有7天保留阈值(deletedFileRetentionDuration),避免运行中的任务遇到文件丢失错误。定期跑VACUUM或交给预测优化,可以移除无引用数据文件和旧Iceberg元数据,保持低成本和高性能。
连接Databricks Iceberg数据到Lakehouse后,用BigQuery激活数据。分离计算与存储、拥抱开放格式、用标准REST API和凭证发放,可以让工程负载和并发分析并行,不迁移数据也不牺牲性能。配合UniForm读、Lakehouse联邦、缓存以及定期OPTIMIZE和VACUUM,可以构建一个零拷贝的高效湖仓,降低存储支出,减少脆弱管道,并为AI负载做好准备。不再需要跨平台搬文件,注册到Lakehouse runtime catalog即可开始双向联邦。


