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 <[email protected]> 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) + } } }
