Following @Ambling's guidelines, you can use sparkSession.experimental.extraStrategiesto add your functionality to SparkPlanner.
An example strategy that simply prints "Hello world" on the console
object MyStrategy extends Strategy {
def apply(plan: LogicalPlan): Seq[SparkPlan] = {
println("Hello world!")
Nil
}
}
with run example:
val spark = SparkSession.builder().master("local").getOrCreate()
spark.experimental.extraStrategies = Seq(MyStrategy)
val q = spark.catalog.listTables.filter(t => t.name == "five")
q.explain(true)
spark.stop()
You can find a working example project for a friend of GitHub: https://github.com/bartekkalinka/spark-custom-rule-executor
Atais source
share