astral-compiler/astral/catalyst/impl/src/com/astraldb/catalyst/OptimizerTest.scala

56 lines
1.4 KiB
Scala

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