You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sedona.apache.org by ji...@apache.org on 2026/03/09 07:26:30 UTC
(sedona) 01/01: [GH-2640] Simplify warning messages of SedonaContext.create()
This is an automated email from the ASF dual-hosted git repository.
jiayu pushed a commit to branch fix-rs-function-warning-messages
in repository https://gitbox.apache.org/repos/asf/sedona.git
commit 6ab262ffbc59eff2923e82eae1d892dc30f4ffe8
Author: Jia Yu <ji...@apache.org>
AuthorDate: Mon Mar 9 00:26:13 2026 -0700
[GH-2640] Simplify warning messages of SedonaContext.create()
Skip duplicate registration of UDT types and raster aggregate functions when SedonaContext.create() is called multiple times, eliminating spurious warning messages.
---
.../main/scala/org/apache/sedona/sql/RasterRegistrator.scala | 10 +++++++---
.../sql/sedona_sql/UDT/RasterUdtRegistratorWrapper.scala | 4 +++-
.../spark/sql/sedona_sql/UDT/UdtRegistratorWrapper.scala | 12 +++++++++---
.../spark/sql/sedona_viz/UDT/UdtRegistratorWrapper.scala | 12 ++++++++----
4 files changed, 27 insertions(+), 11 deletions(-)
diff --git a/spark/common/src/main/scala/org/apache/sedona/sql/RasterRegistrator.scala b/spark/common/src/main/scala/org/apache/sedona/sql/RasterRegistrator.scala
index ee7aa8b0be..c852a3e2b6 100644
--- a/spark/common/src/main/scala/org/apache/sedona/sql/RasterRegistrator.scala
+++ b/spark/common/src/main/scala/org/apache/sedona/sql/RasterRegistrator.scala
@@ -31,9 +31,13 @@ object RasterRegistrator {
def registerAll(sparkSession: SparkSession): Unit = {
if (isGeoToolsAvailable) {
RasterUdtRegistratorWrapper.registerAll(gridClassName)
- sparkSession.udf.register(
- RasterUdafCatalog.rasterAggregateExpression.getClass.getSimpleName,
- functions.udaf(RasterUdafCatalog.rasterAggregateExpression))
+ val functionName = RasterUdafCatalog.rasterAggregateExpression.getClass.getSimpleName
+ val functionIdentifier = FunctionIdentifier(functionName)
+ if (!sparkSession.sessionState.functionRegistry.functionExists(functionIdentifier)) {
+ sparkSession.udf.register(
+ functionName,
+ functions.udaf(RasterUdafCatalog.rasterAggregateExpression))
+ }
}
}
diff --git a/spark/common/src/main/scala/org/apache/spark/sql/sedona_sql/UDT/RasterUdtRegistratorWrapper.scala b/spark/common/src/main/scala/org/apache/spark/sql/sedona_sql/UDT/RasterUdtRegistratorWrapper.scala
index 23e5a6a070..9a769f5c0a 100644
--- a/spark/common/src/main/scala/org/apache/spark/sql/sedona_sql/UDT/RasterUdtRegistratorWrapper.scala
+++ b/spark/common/src/main/scala/org/apache/spark/sql/sedona_sql/UDT/RasterUdtRegistratorWrapper.scala
@@ -23,6 +23,8 @@ import org.apache.spark.sql.types.UDTRegistration
object RasterUdtRegistratorWrapper {
def registerAll(gridClassName: String): Unit = {
- UDTRegistration.register(gridClassName, classOf[RasterUDT].getName)
+ if (!UDTRegistration.exists(gridClassName)) {
+ UDTRegistration.register(gridClassName, classOf[RasterUDT].getName)
+ }
}
}
diff --git a/spark/common/src/main/scala/org/apache/spark/sql/sedona_sql/UDT/UdtRegistratorWrapper.scala b/spark/common/src/main/scala/org/apache/spark/sql/sedona_sql/UDT/UdtRegistratorWrapper.scala
index 2a9b0b397c..9b0179fce6 100644
--- a/spark/common/src/main/scala/org/apache/spark/sql/sedona_sql/UDT/UdtRegistratorWrapper.scala
+++ b/spark/common/src/main/scala/org/apache/spark/sql/sedona_sql/UDT/UdtRegistratorWrapper.scala
@@ -26,8 +26,14 @@ import org.locationtech.jts.index.SpatialIndex
object UdtRegistratorWrapper {
def registerAll(): Unit = {
- UDTRegistration.register(classOf[Geometry].getName, classOf[GeometryUDT].getName)
- UDTRegistration.register(classOf[Geography].getName, classOf[GeographyUDT].getName)
- UDTRegistration.register(classOf[SpatialIndex].getName, classOf[IndexUDT].getName)
+ registerIfNotExists(classOf[Geometry].getName, classOf[GeometryUDT].getName)
+ registerIfNotExists(classOf[Geography].getName, classOf[GeographyUDT].getName)
+ registerIfNotExists(classOf[SpatialIndex].getName, classOf[IndexUDT].getName)
+ }
+
+ private def registerIfNotExists(userClass: String, udtClass: String): Unit = {
+ if (!UDTRegistration.exists(userClass)) {
+ UDTRegistration.register(userClass, udtClass)
+ }
}
}
diff --git a/spark/common/src/main/scala/org/apache/spark/sql/sedona_viz/UDT/UdtRegistratorWrapper.scala b/spark/common/src/main/scala/org/apache/spark/sql/sedona_viz/UDT/UdtRegistratorWrapper.scala
index 3f5d952d8d..6c7b9b230d 100644
--- a/spark/common/src/main/scala/org/apache/spark/sql/sedona_viz/UDT/UdtRegistratorWrapper.scala
+++ b/spark/common/src/main/scala/org/apache/spark/sql/sedona_viz/UDT/UdtRegistratorWrapper.scala
@@ -24,9 +24,13 @@ import org.apache.spark.sql.types.UDTRegistration
object UdtRegistratorWrapper {
def registerAll(): Unit = {
- UDTRegistration.register(
- classOf[ImageSerializableWrapper].getName,
- classOf[ImageWrapperUDT].getName)
- UDTRegistration.register(classOf[Pixel].getName, classOf[PixelUDT].getName)
+ if (!UDTRegistration.exists(classOf[ImageSerializableWrapper].getName)) {
+ UDTRegistration.register(
+ classOf[ImageSerializableWrapper].getName,
+ classOf[ImageWrapperUDT].getName)
+ }
+ if (!UDTRegistration.exists(classOf[Pixel].getName)) {
+ UDTRegistration.register(classOf[Pixel].getName, classOf[PixelUDT].getName)
+ }
}
}