Apache Sedona 1.9.1 介绍与选型指南
Apache Sedona 1.9.1 地理空间大数据计算引擎介绍与选型指南:TLP 状态与版本基准、多平台扩展架构、官方空间过滤与空间连接示例、适用场景限制与 PostGIS/GeoMesa/BigQuery GIS 量化对比
Apache Sedona 1.9.1 介绍与选型指南
一、信息基准
本篇信息采集与核验日期为 2026-10-18,全部信息取自 Apache 官方渠道(官网、Maven Central、GitHub 官方仓库与官方 README),本篇不包含任何本地安装与运行实测内容。
| 项目 | 内容 | 依据来源 |
|---|---|---|
| 本次介绍版本 | 1.9.1(官方最新稳定版,GitHub Release 记录时间 2026-08-02) | github.com/apache/sedona/releases.atom |
| Maven 交叉核验 | org.apache.sedona 各官方构件(sedona-spark-*-3.4_2.12、sedona-spark-3.5_2.12、sedona-flink-shaded_2.12、sedona-snowflake 等)的 latest/release 均为 1.9.1 | repo1.maven.org 对应构件 maven-metadata.xml |
| 项目状态 | ASF 顶级项目(已从孵化器毕业),未退役 | sedona.apache.org;projects.apache.org 项目体系 |
| 开源许可 | Apache License 2.0 | ASF 项目标准许可 |
| 旧构件线说明 | sedona-spark-shaded-3.0_2.12 构件线最后版本停留在 1.6.1,新版本不再覆盖 Spark 3.0 | Maven Central 对应构件 maven-metadata.xml |
| 社区规模 | GitHub 约 2422 stars(2026-10-18 查询) | GitHub 官方仓库页 |
官方来源清单:
| 来源 | 地址 | 用途 |
|---|---|---|
| 官网 | https://sedona.apache.org/ | 项目定位、文档入口 |
| GitHub 仓库 | https://github.com/apache/sedona | 源码、README、Releases |
| 官方 README | https://github.com/apache/sedona/blob/master/README.md | 官方示例代码 |
| Maven Central | https://repo1.maven.org/maven2/org/apache/sedona/ | 构件与版本核验 |
| ASF 项目体系 | https://projects.apache.org/ | 顶级项目状态 |
二、软件概述
本文介绍的是 Apache Sedona 1.9.1(2026-08-02 发布)。Apache Sedona 是 ASF 顶级项目,定位是地理空间大数据计算引擎扩展:它把空间数据类型、空间函数、空间判断与空间连接能力注入 Apache Spark、Apache Flink 与 Snowflake 等分布式计算平台,让用户继续用 SQL 与 DataFrame/DataFrame 风格的 API,就能对海量地理空间数据做过滤、关联与分析。
与 PostGIS 这类"数据库内的空间引擎"不同,Sedona 的价值在于把空间计算带到了分布式大数据栈:当数据规模超出单机数据库能力、或空间数据本身已经是数仓/湖仓的一等公民时,Sedona 可以在现有计算引擎上直接处理空间语义,而无需把数据搬出大数据平台。
1.9.1 是当前各平台构件统一对齐的最新版本;官方 Maven 构件同时覆盖 Spark 3.4/3.5、Flink 与 Snowflake 目标平台,旧 Spark 3.0 构件线止于 1.6.1。
三、核心架构
3.1 计算平台扩展层
Sedona 以"平台扩展"的形态存在:针对 Spark 提供系列构件(含 shaded 全量包与公共构件),针对 Flink 提供 sedona-flink-shaded 构件,针对 Snowflake 提供 sedona-snowflake 构件。同一套空间语义在不同平台上保持一致的 API 风格。
3.2 空间类型与函数体系
Sedona 引入空间数据类型(几何对象)与 ST_* 函数族:ST_Point、ST_GeomFromWKT、ST_PolygonFromEnvelope、ST_Contains 等,覆盖几何构造、谓词判断、度量计算等常用空间操作,并可在 SQL 与表达式两种语境下使用。
3.3 空间连接与索引
空间连接(如"点落在哪个行政区划内")是 Sedona 的核心能力之一;框架在分布式执行中引入空间索引与分区策略,避免跨节点两两比对带来的爆炸式开销。
3.4 数据读写
通过 Spark 数据源机制读写常见空间数据形态(如 CSV/Parquet 中的几何列、WKT 文本等),并与大数据平台的存储体系(对象存储等)天然集成。
四、功能特性
4.1 分布式空间 SQL
在 Spark SQL / Flink / Snowflake 中直接书写 ST_* 空间函数查询,空间谓词可下推到分布式执行计划。
4.2 空间过滤
官方 README 示例演示用 ST_Contains 配合 ST_PolygonFromEnvelope 做包围盒空间过滤,语法与普通 SQL 过滤一致。
4.3 空间连接
官方 README 示例演示通过 SQL 关联实现"出租车取车点落入哪个邮区(ZCTA)"的空间连接,直接复用 Spark SQL 的 join 语法。
4.4 多平台一致体验
同一份空间分析逻辑可以在 Spark、Flink、Snowflake 之间迁移,降低平台锁定风险。
4.5 与大数据生态协同
数据可直接来自分布式存储与既有数据表,空间计算结果也可以继续被数仓/湖仓下游消费,空间层不脱离大数据工作流。
五、快速上手
以下内容引自 Apache Sedona 官方 README(https://github.com/apache/sedona/blob/master/README.md ),本篇不做本地实测。
5.1 读取数据并构造空间列
taxidf = (
sedona.read.format("csv")
.option("header", "true")
.option("delimiter", ",")
.load("s3a://your-directory/data/nyc-taxi-data.csv")
)
taxidf = taxidf.selectExpr(
"ST_Point(CAST(Start_Lon AS Decimal(24,20)), CAST(Start_Lat AS Decimal(24,20))) AS pickup",
"Trip_Pickup_DateTime",
"Payment_Type",
"Fare_Amt",
)
zoneDf = (
sedona.read.format("csv")
.option("delimiter", ",")
.load("s3a://your-directory/data/TIGER2018_ZCTA5.csv")
)
zoneDf = zoneDf.selectExpr("ST_GeomFromWKT(_c0) as zone", "_c1 as zipcode")
官方示例用 ST_Point 把经纬度标量构造为点几何,用 ST_GeomFromWKT 把 WKT 文本解析为多边形。
5.2 空间过滤与空间连接
taxidf_mhtn = taxidf.where(
"ST_Contains(ST_PolygonFromEnvelope(-74.01,40.73,-73.93,40.79), pickup)"
)
taxiVsZone = sedona.sql(
"SELECT zone, zipcode, pickup, Fare_Amt FROM zoneDf, taxiDf WHERE ST_Contains(zone, pickup)"
)
前者是包围盒空间过滤,后者以 ST_Contains 谓词完成"点与面"的空间连接。
六、适用场景与限制
6.1 适用场景
- 数据规模超出单机空间数据库承载能力:城市级/国家级轨迹、出行、物流、位置广告等海量点线面数据的分布式分析。
- 空间数据已是数仓/湖仓一环:希望直接在 Spark/Flink/湖仓表上做空间计算,而不是把数据搬进 PostGIS。
- 需要跨平台迁移空间分析逻辑(Spark、Flink、Snowflake 同构 API)。
- 空间连接密集型任务:大规模点-面、面-面关联分析。
6.2 限制
- Sedona 是计算层扩展,不含空间数据库的事务、磁盘索引与在线服务能力,这类需求仍需 PostGIS 等数据库。
- 平台覆盖随版本变化:旧 Spark 3.0 构件线止于 1.6.1,升级引擎版本时需核对官方构件矩阵。
- 空间函数覆盖面不及 PostGIS 丰富,极端复杂的空间分析(拓扑、栅格高级处理等)需评估函数可用性。
- 需要具备 Spark/Flink 运维能力,团队若无大数据平台基础,引入门槛高于单机数据库方案。
七、同类选型对比
以下数据均为 2026-10-18 联网实查:stars 来自各 GitHub 官方仓库页,最近发版来自各项目官方 Releases 记录,许可来自各项目仓库许可文件。
| 维度 | Apache Sedona 1.9.1 | PostGIS | GeoMesa 5.4.0 | BigQuery GIS |
|---|---|---|---|---|
| 开源许可 | Apache-2.0 | GPLv2+(仓库 COPYING 文件为 General Public License) | Apache-2.0 | 非开源,Google Cloud 托管能力 |
| GitHub stars(2026-10-18) | 约 2422 | 约 2247 | 约 1499 | 官方未公布(闭源云服务,无公开仓库) |
| 最近发版 | 1.9.1(2026-08-02) | 3.7.0rc2(2026-09-08,候选版本;另有 3.6.x 稳定线) | 5.4.0(2025-10-10) | 官方未公布(云服务持续更新,无版本号) |
| 版本节奏 | 活跃(1.x 年度多版) | 活跃(3.x 系列持续发布) | 中等(5.x,约年度级) | 服务制 |
| 兼容矩阵 | Spark 3.4/3.5、Flink、Snowflake(官方 Maven 构件) | PostgreSQL 扩展 | 依托 Accumulo/HBase/Redis 等分布式存储,含 Spark/GeoServer 工具链 | 仅 BigQuery 平台 |
| 定位 | 分布式计算引擎的空间扩展 | PostgreSQL 空间数据库引擎 | 时空大数据存储与查询 | 云数仓内置 GIS 函数 |
选型建议:数据在 PostgreSQL 可承载范围内优先 PostGIS(功能最全、事务在线能力强);数据在 Spark/Flink/湖仓且规模巨大时选 Sedona 1.9.1;以 Accumulo/HBase 为存储底的时空查询场景选 GeoMesa;已深度使用 BigQuery 且不要求开源许可时可直接用 BigQuery GIS。
八、参考链接
- 官网:https://sedona.apache.org/
- GitHub 官方仓库:https://github.com/apache/sedona
- 官方 README(示例代码出处):https://github.com/apache/sedona/blob/master/README.md
- Maven Central 构件目录:https://repo1.maven.org/maven2/org/apache/sedona/
- GitHub Releases(版本记录):https://github.com/apache/sedona/releases
- ASF 项目体系:https://projects.apache.org/