因此,我正在尝试设置 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 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