跳转至
Apache Sedona 1.9.0 已正式发布,新增 Spark 4.1 支持、proj4sedona 坐标系转换、Bing Tile 函数等众多特性!

安装 Sedona Python

Apache Sedona 扩展了 PySpark 函数,依赖以下库:

  • pyspark
  • shapely
  • attrs

如果您的系统尚未安装这些包,请先安装。Sedona 现使用 uv 管理 Python 依赖,详细依赖定义见 pyproject.toml

安装 sedona

pip install apache-sedona
  • 自 Sedona v1.1.0 起,pyspark 已成为 Sedona Python 的可选依赖,因为许多 Spark 平台都已预装 Spark。如需在安装 Sedona Python 时一并安装 pyspark,请使用 spark 附加项:
pip install apache-sedona[spark]
  • 从 Sedona Python 源码安装

克隆 Sedona GitHub 源码后运行以下命令:

cd python
python3 -m pip install .

准备 sedona-spark jar

Sedona Python 需要额外配套一个名为 sedona-spark-shadedsedona-spark 的 jar 文件。请确保所选版本与您的 Spark 和 Scala 版本匹配。

请在 artifact 名称中使用 Spark 的 major.minor 版本号。

可通过以下方式之一获取该 jar:

  1. 如果您在 Databricks、AWS EMR 或其他云平台的 notebook 中运行 Sedona,请使用 shaded jar:从 Maven Central 下载 sedona-spark-shaded jargeotools-wrapper jar,并将其放入 SPARK_HOME/jars/ 目录。
  2. 如果您在 IDE 或本地 Jupyter Notebook 中运行 Sedona,请使用 unshaded jar,并在 Python 程序中通过 Maven Central 坐标 引用,例如:

Sedona >= 1.4.1

from sedona.spark import *

config = (
    SedonaContext.builder()
    .config(
        "spark.jars.packages",
        "org.apache.sedona:sedona-spark-3.3_2.12:1.9.0,"
        "org.datasyslab:geotools-wrapper:1.9.0-33.5",
    )
    .config(
        "spark.jars.repositories",
        "https://artifacts.unidata.ucar.edu/repository/unidata-all",
    )
    .getOrCreate()
)
sedona = SedonaContext.create(config)

Sedona < 1.4.1

SedonaRegistrator 自 Sedona 1.4.1 起已被弃用,请改用上面的方式。

from pyspark.sql import SparkSession
from sedona.spark import SedonaRegistrator
from sedona.spark import SedonaKryoRegistrator, KryoSerializer

spark = (
    SparkSession.builder.appName("appName")
    .config("spark.serializer", KryoSerializer.getName)
    .config("spark.kryo.registrator", SedonaKryoRegistrator.getName)
    .config(
        "spark.jars.packages",
        "org.apache.sedona:sedona-spark-shaded-3.3_2.12:1.9.0,"
        "org.datasyslab:geotools-wrapper:1.9.0-33.5",
    )
    .getOrCreate()
)
SedonaRegistrator.registerAll(spark)

设置环境变量

如果您手动将 sedona-spark-shaded jar 复制到 SPARK_HOME/jars/ 目录,则需要设置两个环境变量:

  • SPARK_HOME。例如,在终端运行:
export SPARK_HOME=~/Downloads/spark-3.0.1-bin-hadoop2.7
  • PYTHONPATH。例如,在终端运行:
export PYTHONPATH=$SPARK_HOME/python

之后即可体验 Sedona Python Jupyter Notebook