This is an automated email from the ASF dual-hosted git repository.

jiayu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sedona.git


The following commit(s) were added to refs/heads/master by this push:
     new 94cd82b51 [SEDONA-568] Refactor TestBaseScala to allow customizable 
Spark configurations (#1455)
94cd82b51 is described below

commit 94cd82b514170a4c2461765954e909c4f3768093
Author: Feng Zhang <[email protected]>
AuthorDate: Thu Jun 6 21:44:30 2024 -0700

    [SEDONA-568] Refactor TestBaseScala to allow customizable Spark 
configurations (#1455)
    
    - Added default Spark configurations in `TestBaseScala` trait.
    - Provided a method `defaultSparkConfig` for default configurations.
    - Allowed subclasses to override `sparkConfig` to add or modify Spark 
configurations.
    - Updated initialization of Spark session and Spark context to use the 
provided configurations.
    - Included comments to explain how to override configurations in subclasses.
    - Ensured that default configurations are preserved if not overridden by 
subclasses.
---
 .../org/apache/sedona/sql/TestBaseScala.scala      | 33 +++++++++++++++-------
 1 file changed, 23 insertions(+), 10 deletions(-)

diff --git 
a/spark/common/src/test/scala/org/apache/sedona/sql/TestBaseScala.scala 
b/spark/common/src/test/scala/org/apache/sedona/sql/TestBaseScala.scala
index eaace3a32..891b0b3ae 100644
--- a/spark/common/src/test/scala/org/apache/sedona/sql/TestBaseScala.scala
+++ b/spark/common/src/test/scala/org/apache/sedona/sql/TestBaseScala.scala
@@ -26,7 +26,8 @@ import org.apache.sedona.common.Functions.{frechetDistance, 
hausdorffDistance}
 import org.apache.sedona.common.Predicates.dWithin
 import org.apache.sedona.common.sphere.{Haversine, Spheroid}
 import org.apache.sedona.spark.SedonaContext
-import org.apache.spark.sql.DataFrame
+import org.apache.spark.SparkContext
+import org.apache.spark.sql.{DataFrame, SparkSession}
 import org.locationtech.jts.geom._
 import org.scalatest.{BeforeAndAfterAll, FunSpec}
 
@@ -39,16 +40,27 @@ trait TestBaseScala extends FunSpec with BeforeAndAfterAll {
   Logger.getLogger("akka").setLevel(Level.WARN)
   Logger.getLogger("org.apache.sedona.core").setLevel(Level.WARN)
 
-  val warehouseLocation = System.getProperty("user.dir") + "/target/"
-  val sparkSession = SedonaContext.builder().
-    master("local[*]").appName("sedonasqlScalaTest")
-    .config("spark.sql.warehouse.dir", warehouseLocation)
-    // We need to be explicit about broadcasting in tests.
-    .config("sedona.join.autoBroadcastJoinThreshold", "-1")
-    .config("spark.kryoserializer.buffer.max", "64m")
-    .getOrCreate()
+  // Default Spark configurations
+  def defaultSparkConfig: Map[String, String] = Map(
+    "spark.sql.warehouse.dir" -> (System.getProperty("user.dir") + "/target/"),
+    "sedona.join.autoBroadcastJoinThreshold" -> "-1",
+    "spark.kryoserializer.buffer.max" -> "64m"
+  )
 
-  val sc = sparkSession.sparkContext
+  // Method to be overridden by subclasses to provide additional configurations
+  def sparkConfig: Map[String, String] = defaultSparkConfig
+
+  // Lazy initialization of Spark session using configurations
+  lazy val sparkSession: SparkSession = {
+    val builder = SedonaContext.builder()
+      .master("local[*]")
+      .appName("sedonasqlScalaTest")
+    sparkConfig.foreach { case (key, value) => builder.config(key, value) }
+    builder.getOrCreate()
+  }
+
+  // Lazy initialization of Spark context from the Spark session
+  lazy val sc: SparkContext = sparkSession.sparkContext
 
   val resourceFolder = System.getProperty("user.dir") + "/src/test/resources/"
   val mixedWkbGeometryInputLocation = resourceFolder + "county_small_wkb.tsv"
@@ -80,6 +92,7 @@ trait TestBaseScala extends FunSpec with BeforeAndAfterAll {
   private val factory = new GeometryFactory()
 
   override def beforeAll(): Unit = {
+    super.beforeAll()
     SedonaContext.create(sparkSession)
   }
 

Reply via email to