gpt4 book ai didi

apache-spark - 如何使用自定义规则扩展 Spark Catalyst 优化器?

转载 作者:行者123 更新时间:2023-12-05 00:19:24 24 4
gpt4 key购买 nike

我想使用 Catalyst 规则将星型模式( https://en.wikipedia.org/wiki/Star_schema )SQL 查询转换为 SQL 查询到非规范化星型模式,其中维度表中的某些字段在事实表中表示。
我试图找到一些扩展点来添加自己的规则来进行上述转换。但是我没有找到任何扩展点。所以有以下问题:

  • 如何将自己的规则添加到催化剂优化器?
  • 是否有另一种解决方案来实现上述功能?
  • 最佳答案

    按照@Ambling 的建议,您可以使用 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()

    你可以在 friend 的 GitHub 上找到一个工作示例项目: https://github.com/bartekkalinka/spark-custom-rule-executor

    关于apache-spark - 如何使用自定义规则扩展 Spark Catalyst 优化器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36152173/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com