Skip to content

Commit 624a396

Browse files
committed
GEOMESA-3519 Spark - Update to Sedona 1.8.0
1 parent 331c43a commit 624a396

File tree

5 files changed

+27
-21
lines changed

5 files changed

+27
-21
lines changed

build/cqs.tsv

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -318,8 +318,8 @@ org.apache.htrace:htrace-core4 4.1.0-incubating provided
318318
org.apache.kafka:kafka-clients 3.9.0 provided
319319
org.apache.kafka:kafka-streams-scala_2.12 3.9.0 provided
320320
org.apache.kafka:kafka-streams 3.9.0 provided
321-
org.apache.sedona:sedona-spark-3.4_2.12 1.5.0 provided
322-
org.apache.sedona:sedona-spark-common-3.4_2.12 1.5.0 provided
321+
org.apache.sedona:sedona-spark-3.5_2.12 1.8.0 provided
322+
org.apache.sedona:sedona-spark-common-3.5_2.12 1.8.0 provided
323323
org.apache.spark:spark-catalyst_2.12 3.5.5 provided
324324
org.apache.spark:spark-core_2.12 3.5.5 provided
325325
org.apache.spark:spark-sql_2.12 3.5.5 provided
@@ -338,7 +338,7 @@ org.apache.arrow:arrow-vector tests:18.3.0 test
338338
org.apache.curator:curator-test 5.6.0 test
339339
org.apache.kafka:kafka-clients test:3.9.0 test
340340
org.apache.kafka:kafka-streams-test-utils 3.9.0 test
341-
org.apache.sedona:sedona-common 1.5.0 test
341+
org.apache.sedona:sedona-common 1.8.0 test
342342
org.codehaus.groovy:groovy-jsr223 3.0.20 test
343343
org.duckdb:duckdb_jdbc 1.2.2.0 test
344344
org.geomesa.testcontainers:testcontainers-accumulo 1.4.1 test

docs/user/upgrade.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ The following dependencies have been upgraded:
107107
* nifi ``2.4.0`` -> ``2.5.0``
108108
* orc ``1.9.6`` -> ``1.9.7``
109109
* postgresql ``42.7.2`` -> ``42.7.7``
110+
* sedona ``1.5.0`` -> ``1.8.0``
110111

111112
Switch to Micrometer Metrics
112113
----------------------------

geomesa-spark/geomesa-spark-jts/src/main/scala/org/locationtech/geomesa/spark/jts/package.scala

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,12 @@ import scala.util.Try
2020
*/
2121
package object jts extends DataFrameFunctions.Library with SpatialEncoders {
2222

23-
lazy val SedonaGeometryUDT: Try[UserDefinedType[Geometry]] =
24-
Try(Class.forName("org.apache.spark.sql.sedona_sql.UDT.GeometryUDT").newInstance().asInstanceOf[UserDefinedType[Geometry]])
23+
lazy val SedonaGeometryUDT: Try[UserDefinedType[Geometry]] = Try {
24+
Class.forName("org.apache.spark.sql.sedona_sql.UDT.GeometryUDT")
25+
.getDeclaredConstructor()
26+
.newInstance()
27+
.asInstanceOf[UserDefinedType[Geometry]]
28+
}
2529

2630
def useSedonaSerialization: Boolean =
2731
sys.props.get("geomesa.use.sedona").forall(_.toBoolean) && SedonaGeometryUDT.isSuccess

geomesa-spark/geomesa-spark-sql/src/main/scala/org/locationtech/geomesa/spark/sql/SQLRules.scala

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import org.apache.spark.sql.catalyst.rules.Rule
1515
import org.apache.spark.sql.execution.datasources.LogicalRelation
1616
import org.apache.spark.sql.execution.{ProjectExec, SparkPlan}
1717
import org.apache.spark.sql.sedona_sql.UDT.{GeometryUDT => Sedona_GeometryUDT}
18-
import org.apache.spark.sql.sedona_sql.expressions.{ST_Contains => Sedona_ST_Contains, ST_Crosses => Sedona_ST_Crosses, ST_Equals => Sedona_ST_Equals, ST_Intersects => Sedona_ST_Intersects, ST_Overlaps => Sedona_ST_Overlaps, ST_Predicate => Sedona_ST_Predicate, ST_Touches => Sedona_ST_Touches, ST_Within => Sedona_ST_Within}
18+
import org.apache.spark.sql.sedona_sql.expressions.{ST_Predicate => Sedona_ST_Predicate}
1919
import org.apache.spark.sql.types.DataTypes
2020
import org.apache.spark.sql.{SQLContext, Strategy}
2121
import org.geotools.api.filter.expression.{Expression => GTExpression, Literal => GTLiteral}
@@ -74,20 +74,21 @@ object SQLRules extends LazyLogging {
7474
}
7575

7676
def sedonaExprToGTFilter(pred: Sedona_ST_Predicate): Option[GTFilter] = {
77-
val left = pred.children.head
78-
val right = pred.children.last
79-
(sparkExprToGTExpr(left), sparkExprToGTExpr(right)) match {
80-
case (Some(expr1), Some(expr2)) => pred match {
81-
case Sedona_ST_Contains(_) => Some(ff.contains(expr1, expr2))
82-
case Sedona_ST_Crosses(_) => Some(ff.crosses(expr1, expr2))
83-
case Sedona_ST_Overlaps(_) => Some(ff.overlaps(expr1, expr2))
84-
case Sedona_ST_Intersects(_) => Some(ff.intersects(expr1, expr2))
85-
case Sedona_ST_Within(_) => Some(ff.within(expr1, expr2))
86-
case Sedona_ST_Touches(_) => Some(ff.touches(expr1, expr2))
87-
case Sedona_ST_Equals(_) => Some(ff.equal(expr1, expr2))
88-
case _ => None
77+
sparkExprToGTExpr(pred.children.head).flatMap { expr1 =>
78+
sparkExprToGTExpr(pred.children.last).flatMap { expr2 =>
79+
// sedona classes are private, so we have to match on the class name instead of the class itself
80+
pred.getClass.getSimpleName match {
81+
case "ST_Contains" => Some(ff.contains(expr1, expr2))
82+
case "ST_Crosses" => Some(ff.crosses(expr1, expr2))
83+
case "ST_Overlaps" => Some(ff.overlaps(expr1, expr2))
84+
case "ST_Intersects" => Some(ff.intersects(expr1, expr2))
85+
case "ST_Within" => Some(ff.within(expr1, expr2))
86+
case "ST_Touches" => Some(ff.touches(expr1, expr2))
87+
case "ST_Equals" => Some(ff.equal(expr1, expr2))
88+
case "ST_Disjoint" => Some(ff.disjoint(expr1, expr2))
89+
case _ => None
90+
}
8991
}
90-
case _ => None
9192
}
9293
}
9394

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,8 @@
145145
<kafka.version>3.9.0</kafka.version> <!-- needs to align with confluent version -->
146146
<confluent.version>7.8.0</confluent.version> <!-- confluent 7.8.x corresponds to kafka 3.8.x -->
147147
<confluent.protobuf.version>3.25.6</confluent.protobuf.version>
148-
<sedona.version>1.5.0</sedona.version>
149-
<sedona.spark.version>3.4</sedona.spark.version>
148+
<sedona.version>1.8.0</sedona.version>
149+
<sedona.spark.version>3.5</sedona.spark.version>
150150
<sedona.h3.version>4.1.1</sedona.h3.version>
151151
<jts2geojson.version>0.16.1</jts2geojson.version> <!-- for testing Apache Sedona integration -->
152152
<snappy.java.version>1.1.10.5</snappy.java.version>

0 commit comments

Comments
 (0)