Apache Sedona 扩展了 PySpark 函数,依赖以下库:
如果您的系统尚未安装这些包,请先安装。Sedona 现使用 uv 管理 Python 依赖,详细依赖定义见 pyproject.toml。
pip install apache-sedona
spark 附加项:pip install apache-sedona[spark]
克隆 Sedona GitHub 源码后运行以下命令:
cd python python3 -m pip install .
Sedona Python 需要额外配套一个名为 sedona-spark-shaded 或 sedona-spark 的 jar 文件。请确保所选版本与您的 Spark 和 Scala 版本匹配。
请在 artifact 名称中使用 Spark 的 major.minor 版本号。
可通过以下方式之一获取该 jar:
shaded jar:从 Maven Central 下载 sedona-spark-shaded jar 与 geotools-wrapper jar,并将其放入 SPARK_HOME/jars/ 目录。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:{{ sedona.current_version }}," "org.datasyslab:geotools-wrapper:{{ sedona.current_geotools }}", ) .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:{{ sedona.current_version }}," "org.datasyslab:geotools-wrapper:{{ sedona.current_geotools }}", ) .getOrCreate() ) SedonaRegistrator.registerAll(spark)
如果您手动将 sedona-spark-shaded jar 复制到 SPARK_HOME/jars/ 目录,则需要设置两个环境变量:
export SPARK_HOME=~/Downloads/spark-3.0.1-bin-hadoop2.7
export PYTHONPATH=$SPARK_HOME/python
之后即可体验 Sedona Python Jupyter Notebook。