跳到主要内容

Substrait

概述: Substrait是一套开源标准,用于以平台无关的方式表示关系代数执行计划。与Parquet、Arrow等传统数据存储格式不同,Substrait属于执行计划/协议格式,而非序列化数据格式。其核心目标是实现不同引擎间可互操作的查询执行,让各类系统能够共享查询计划,无需绑定特定的底层后端。

核心特性

  • 跨引擎互操作性:Substrait支持将查询计划序列化后,在不同SQL引擎或执行引擎间传输执行。
  • 可扩展的关系代数表示:支持标准关系型算子(扫描、过滤、连接、聚合、排序),并允许自定义引擎专属扩展。
  • 与Arrow/Parquet集成:Substrait基于Apache Arrow实现内存中列式数据表示,同时可引用Parquet等格式存储的数据。
  • 基于Protobuf的序列化:执行计划通过Protobuf序列化,便于跨语言、跨平台解析和传输。

典型应用场景

  • 引擎间查询计划交换(如将优化后的执行计划从查询规划器提交至分布式执行引擎)。
  • 跨系统优化逻辑的标准化落地。
  • 异构后端的查询联邦,无需重写SQL即可跨数据源查询。

参考资源