2023-07-07 18:41:25 -04:00
|
|
|
package com.astraldb.catalyst
|
|
|
|
|
2023-07-08 18:03:20 -04:00
|
|
|
import org.apache.spark.sql.{ Row, SparkSession }
|
|
|
|
import org.apache.spark.sql.types._
|
|
|
|
import org.apache.spark.sql.functions._
|
|
|
|
|
2023-07-07 18:41:25 -04:00
|
|
|
object OptimizerTest
|
|
|
|
{
|
|
|
|
def main(args: Array[String]): Unit =
|
|
|
|
{
|
2023-07-18 21:37:15 -04:00
|
|
|
|
2023-07-08 18:03:20 -04:00
|
|
|
val spark: SparkSession =
|
|
|
|
SparkSession.builder
|
|
|
|
.appName("OptimizerTest")
|
|
|
|
.master("local")
|
|
|
|
.getOrCreate()
|
2023-07-18 21:37:15 -04:00
|
|
|
spark.sparkContext.setLogLevel("ERROR")
|
2023-07-08 18:03:20 -04:00
|
|
|
val r = spark.emptyDataFrame
|
|
|
|
.select(lit(1) as "A", lit(2) as "B")
|
|
|
|
r.createOrReplaceTempView("R")
|
|
|
|
val df = spark.sql("SELECT * FROM R")
|
2023-07-18 21:37:15 -04:00
|
|
|
val analyzed = df.queryExecution.analyzed
|
2023-07-08 18:03:20 -04:00
|
|
|
|
|
|
|
println(df.queryExecution.logical)
|
2023-07-18 21:37:15 -04:00
|
|
|
println(analyzed)
|
2023-07-08 18:03:20 -04:00
|
|
|
|
|
|
|
println("------------------")
|
|
|
|
|
|
|
|
val optimized =
|
|
|
|
Time("Astral Optimizer") {
|
2023-07-18 21:37:15 -04:00
|
|
|
Optimizer.rewrite(analyzed)
|
2023-07-08 18:03:20 -04:00
|
|
|
}
|
|
|
|
|
2023-07-18 21:37:15 -04:00
|
|
|
println("------------------\nAstral-Naive Optimized Query:\n")
|
|
|
|
println(optimized)
|
|
|
|
println("------------------")
|
|
|
|
|
|
|
|
val bddOptimized =
|
|
|
|
Time("BDD Optimizer") {
|
|
|
|
LogicalPlanBDDOptimizer.rewrite(analyzed)
|
|
|
|
}
|
|
|
|
|
|
|
|
println("------------------\nAstral-BDD Optimized Query:\n")
|
2023-07-08 18:03:20 -04:00
|
|
|
println(optimized)
|
|
|
|
println("------------------")
|
|
|
|
|
|
|
|
val sparkOptimized =
|
|
|
|
Time("Spark Optimizer") {
|
|
|
|
df.queryExecution.optimizedPlan
|
|
|
|
}
|
|
|
|
println("------------------\nSpark Optimized Query:\n")
|
|
|
|
println(sparkOptimized)
|
|
|
|
println("------------------")
|
2023-07-18 21:37:15 -04:00
|
|
|
|
2023-07-07 18:41:25 -04:00
|
|
|
}
|
|
|
|
}
|