【问题标题】:SPARK : Does CBO in spark applies only to spark-sql only or is it also applied for Dataframe and Dataset API?SPARK:Spark 中的 CBO 仅适用于 spark-sql 还是也适用于 Dataframe 和 Dataset API?
【发布时间】:2019-11-25 03:38:42
【问题描述】:
  1. 主要问题:Spark 中的 CBO(基于成本的优化器)是否仅适用于 spark-sql 还是也适用于 Dataframe 和 Dataset API?
  2. CBO 和 tungsten 和 Catalyst 优化器有什么区别?
  3. 详细了解以上3个主题是否有助于提高性能?我们真的可以控制和调整背后的内部结构吗?如果是,请指导如何使用并分享一些参考链接。(我发现很多文章解释了这些概念,但很少真正解释如何利用这些信息来提高性能)

【问题讨论】:

    标签: apache-spark apache-spark-sql


    【解决方案1】:
    1. 是的,也适用于 DataFrame/Dataset API

    2. Catalyst 是 Spark 2.2 之前基于规则的优化器。启用 CBO 将允许 Catalyst 使用实际(元)数据来决定选择哪个物理计划。所以我认为 CBO 是 Catalyst 的一部分

    3. 不,您不能“调整”,如果您收集输入表的表统计信息(ANALYZE TABLE ...),则可以使用 CBO。像这样,催化剂会做出更好的物理计划。

    【讨论】:

    • 谢谢。我同意 CBO 是对 Catalyst 的改进,也是其中的一部分。但是我可以知道我们如何将 CBO 与 Dataframes/Dataset API 一起使用,因为就像您提到的(分析表 ...)。我只在 spark-sql 中遇到过它的使用。您还可以提供某种参考链接或示例显示 Dataframes 和 Dataset API 确实使用 CBO
    • 还有一个查询。正如您所提到的,它不是可调参数,但我看到在基数计算公式中有一个权重参数,根据 Databricks 中的帖子,它是一个可调参数。我想知道哪个配置参数与该权重相关,以及权重如何影响方程式。比如是成反比还是成正比
    猜你喜欢
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多