【问题标题】:What tools to use to visualize logical and physical query plans?使用哪些工具来可视化逻辑和物理查询计划?
【发布时间】:2017-05-29 12:12:13
【问题描述】:

我熟悉explain()(也是WebUI)。我很好奇是否有任何工具可以在优化之前/之后生成逻辑/物理计划的树结构图像。也就是explain()返回的图片信息。

【问题讨论】:

    标签: apache-spark apache-spark-sql


    【解决方案1】:

    像 PNG 或 JPG 这样的图片?我自己从未听说过,但您可以使用 Web UI(您已经提到过)查看物理计划。

    查询执行的其他阶段可使用TreeNode 方法(在许多可以帮助您的方法中)为您提供我最喜欢的numberedTreeString

    scala> println(q.queryExecution.analyzed.numberedTreeString)
    00 Range (0, 5, step=1, splits=Some(8))
    
    scala> println(q.queryExecution.executedPlan.numberedTreeString)
    00 *Range (0, 5, step=1, splits=8)
    

    您可以使用toJSONprettyJson 将输出保存为JSON 以生成PNG(但我自己从未尝试过)。

    scala> println(q.queryExecution.executedPlan.prettyJson)
    [ {
      "class" : "org.apache.spark.sql.execution.WholeStageCodegenExec",
      "num-children" : 1,
      "child" : 0
    }, {
      "class" : "org.apache.spark.sql.execution.RangeExec",
      "num-children" : 0,
      "range" : [ {
        "class" : "org.apache.spark.sql.catalyst.plans.logical.Range",
        "num-children" : 0,
        "start" : 0,
        "end" : 5,
        "step" : 1,
        "numSlices" : 8,
        "output" : [ [ {
          "class" : "org.apache.spark.sql.catalyst.expressions.AttributeReference",
          "num-children" : 0,
          "name" : "id",
          "dataType" : "long",
          "nullable" : false,
          "metadata" : { },
          "exprId" : {
            "product-class" : "org.apache.spark.sql.catalyst.expressions.ExprId",
            "id" : 0,
            "jvmId" : "cb497d01-3b90-42a7-9ebf-ebe85578f763"
          },
          "isGenerated" : false
        } ] ]
      } ]
    } ]
    

    【讨论】:

    • python有类似的API吗?
    • 不知道。你最好单独问一个关于 SO 的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    相关资源
    最近更新 更多