Apache Sedona 1.9.1 介绍与选型指南

Apache Sedona 1.9.1 地理空间大数据计算引擎介绍与选型指南:TLP 状态与版本基准、多平台扩展架构、官方空间过滤与空间连接示例、适用场景限制与 PostGIS/GeoMesa/BigQuery GIS 量化对比

Apache SedonaApache Sedona大数据与计算引擎2026/10/18

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.1repo1.maven.org 对应构件 maven-metadata.xml
项目状态ASF 顶级项目(已从孵化器毕业),未退役sedona.apache.org;projects.apache.org 项目体系
开源许可Apache License 2.0ASF 项目标准许可
旧构件线说明sedona-spark-shaded-3.0_2.12 构件线最后版本停留在 1.6.1,新版本不再覆盖 Spark 3.0Maven Central 对应构件 maven-metadata.xml
社区规模GitHub 约 2422 stars(2026-10-18 查询)GitHub 官方仓库页

官方来源清单:

来源地址用途
官网https://sedona.apache.org/项目定位、文档入口
GitHub 仓库https://github.com/apache/sedona源码、README、Releases
官方 READMEhttps://github.com/apache/sedona/blob/master/README.md官方示例代码
Maven Centralhttps://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.1PostGISGeoMesa 5.4.0BigQuery GIS
开源许可Apache-2.0GPLv2+(仓库 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。

八、参考链接

  1. 官网:https://sedona.apache.org/
  2. GitHub 官方仓库:https://github.com/apache/sedona
  3. 官方 README(示例代码出处):https://github.com/apache/sedona/blob/master/README.md
  4. Maven Central 构件目录:https://repo1.maven.org/maven2/org/apache/sedona/
  5. GitHub Releases(版本记录):https://github.com/apache/sedona/releases
  6. ASF 项目体系:https://projects.apache.org/