Spark DataFrame 中的 queryExecution 有什么用?

2024-02-14

我必须了解数据帧对象上名为 queryExecution 的变量,并在 console 中找到以下输出。但不确定它有什么帮助。请在控制台中找到输出。

scala> df.queryExecution
res5: org.apache.spark.sql.SQLContext#QueryExecution =
== Parsed Logical Plan ==
Project [_1#0 AS ID#2,_2#1 AS Token4#3]
 LocalRelation [_1#0,_2#1], [[1,a],[2,b]]

== Analyzed Logical Plan ==
ID: int, Token4: string
Project [_1#0 AS ID#2,_2#1 AS Token4#3]
 LocalRelation [_1#0,_2#1], [[1,a],[2,b]]

== Optimized Logical Plan ==
LocalRelation [ID#2,Token4#3], [[1,a],[2,b]]

== Physical Plan ==
LocalTableScan [ID#2,Token4#3], [[1,a],[2,b]]

Code Generation: true

Thanks


为了实现 Spark SQL,Spark 实现了一个可扩展的优化器,称为Catalyst,基于 Scala 中的函数式编程结构。

Catalyst 的核心包含一个通用库,用于表示树并应用规则来操纵它们。

在此框架之上构建了关系查询处理的特定库(例如表达式、逻辑查询计划),以及处理查询执行不同阶段的几组规则:分析、逻辑优化、物理规划和编译部分的代码生成对 Java 字节码的查询。

就这样queryExecution是数据集/数据框架的一个组成部分,它代表将创建和转换数据的查询执行。

我们主要用它来调试和优化改造。

您可以在以下博客文章中详细了解 Catalyst 的介绍深入研究 Spark SQL 的 Catalyst 优化器 https://databricks.com/blog/2015/04/13/deep-dive-into-spark-sqls-catalyst-optimizer.html以及 @JacekLaskowski 的《Mastering Apache Spark》:

  • 查询执行 https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-sql-debugging-execution.html. [WIP]

  • 调试查询执行 https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-sql-query-execution.html. [WIP]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark DataFrame 中的 queryExecution 有什么用? 的相关文章

随机推荐