queryexecution在spark数据帧中有什么用?

时间:2017-01-18 09:58:50

标签: apache-spark apache-spark-sql

我必须了解一个名为queryExecution的变量,它在一个dataframe对象上,并在控制台的输出下面找到。但它不确定它是如何有用的。请在控制台中找到输出。

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

由于

1 个答案:

答案 0 :(得分:3)

为了实现Spark SQL,Spark基于Scala中的函数编程构造实现了一个名为queryExecution的可扩展优化器。

Catalyst的核心是一个用于表示树和应用规则来操纵它们的通用库。

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

因此{{1}}是数据集/数据框的组成部分,表示将创建和转换数据的查询执行。

我们主要用它来调试和优化转换。

您可以在以下博文Deep Dive into Spark SQL’s Catalyst Optimizer以及@JacekLaskowski掌握Apache Spark中了解有关Catalyst简介的更多信息: