我想使用Catalyst规则将星型模式(https://en.wikipedia.org/wiki/Star_schema)SQL查询转换为SQL查询到非规范化星型模式,其中维度表中的某些字段在事实表中表示。 我试图找到一些扩展点来添加自己的规则来进行上述转换。但我没有找到任何扩展点。所以有以下问题:
答案 0 :(得分:4)
根据@Amble建议,您可以使用sparkSession.experimental.extraStrategies
将您的功能添加到SparkPlanner
。
简单打印" Hello world"在控制台上
object MyStrategy extends Strategy {
def apply(plan: LogicalPlan): Seq[SparkPlan] = {
println("Hello world!")
Nil
}
}
以示例运行:
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()
您可以在朋友的GitHub上找到一个有效的示例项目:https://github.com/bartekkalinka/spark-custom-rule-executor
答案 1 :(得分:2)
作为线索,现在在Spark 2.0中,您可以通过extraStrategies
导入extraOptimizations
和SparkSession.experimental
。