Apache Sedona 版本问题

问题描述 投票:0回答:1

因此,我正在尝试设置 Apache Sedona,但遇到了奇怪的问题,表明版本兼容性已关闭。对于上下文,我有 Apache 版本 1.5.1、PySpark 版本 3.2.1 和 Scala 2.12.18。

我使用maven安装了以下软件包。

我正在尝试运行此代码

from sedona.spark import *

spark = SedonaContext.builder().\
    config('spark.jars.packages',
           'org.apache.sedona:sedona-spark-3.4_2.12:1.5.1,'
           'org.datasyslab:geotools-wrapper:1.5.1-28.2,'
           'uk.co.gresearch.spark:spark-extension_2.12:2.11.0-3.4,'
           'org.apache.sedona:sedona-python-adapter-3.0_2.12:1.4.1'). \
    config('spark.jars.repositories', 'https://artifacts.unidata.ucar.edu/repository/unidata-all'). \
    getOrCreate()

sedona = SedonaContext.create(spark)

根据他们的示例笔记本https://github.com/apache/sedona/blob/master/binder/ApacheSedonaSQL.ipynb,但还要确保添加Python适配器。

但是我收到这个错误

Py4JJavaError: An error occurred while calling o206.showString.
: java.lang.NoSuchMethodError: 'double org.locationtech.jts.geom.Coordinate.getZ()'
    at org.apache.sedona.common.geometrySerde.GeometrySerializer.getCoordinateType(GeometrySerializer.java:449)
    at org.apache.sedona.common.geometrySerde.GeometrySerializer.serializePoint(GeometrySerializer.java:112)
    at org.apache.sedona.common.geometrySerde.GeometrySerializer.serialize(GeometrySerializer.java:43)
    at org.apache.sedona.sql.utils.GeometrySerializer$.serialize(GeometrySerializer.scala:36)
    at org.apache.spark.sql.sedona_sql.expressions.implicits$GeometryEnhancer.toGenericArrayData(implicits.scala:139)
    at org.apache.spark.sql.sedona_sql.expressions.InferredTypes$.$anonfun$buildSerializer$1(InferredExpression.scala:155)
    at org.apache.spark.sql.sedona_sql.expressions.InferredExpression.eval(InferredExpression.scala:71)
    at org.apache.spark.sql.catalyst.expressions.UnaryExpression.eval(Expression.scala:477)
    at org.apache.spark.sql.catalyst.optimizer.ConstantFolding$$anonfun$apply$1$$anonfun$applyOrElse$1.applyOrElse(expressions.scala:69)

地理工具似乎不起作用。我可以加载常规数据框,但无法对它们进行地理空间操作。这是什么问题?

apache-spark pyspark geospatial apache-sedona
1个回答
0
投票

自 Apache Sedona 1.5.0 起,我们不再发布 Python 适配器。如果你从旧版本中放入旧的Python适配器jar,它会弄乱依赖关系。

您需要的正确罐子是我们的文档和笔记本中提到的罐子。

from sedona.spark import *

spark = SedonaContext.builder().\
    config('spark.jars.packages',
           'org.apache.sedona:sedona-spark-3.4_2.12:1.5.1,'
           'org.datasyslab:geotools-wrapper:1.5.1-28.2,'
           'uk.co.gresearch.spark:spark-extension_2.12:2.11.0-3.4'). \
    config('spark.jars.repositories', 'https://artifacts.unidata.ucar.edu/repository/unidata-all'). \
    getOrCreate()

sedona = SedonaContext.create(spark)

请参阅我们的文档:https://sedona.apache.org/1.5.1/setup/install-python/#prepare-sedona-spark-jar

另请确保您的 Spark 版本与 Sedona 的 Maven 坐标中提到的版本匹配。示例中使用的是 Spark 3.4

© www.soinside.com 2019 - 2024. All rights reserved.