【发布时间】:2020-12-17 06:12:22
【问题描述】:
我只是想知道这个火花代码是否
val df = spark.sql("select * from db.table").filter(col("field")=value)
和这个一样高效:
val df = spark.sql("select * from db.table where field=value")
在第一个块中,我们是将所有 hive 数据加载到 RAM 还是 spark 足够智能以在生成的 DAG 执行期间过滤 hive 中的这些值
提前致谢!
【问题讨论】:
-
最好为这两种方法获取查询计划。使用 .explain()。但我猜两者都有相同的执行计划。请检查是否如此。
-
它给出了不同的解析逻辑计划,第二个更优化,但最终优化的逻辑计划与 2 相同,谢谢@AbhishekSengupta,我不知道这个解释函数
-
欢迎,总是寻找最终的逻辑计划,Spark 中的优化器其实很聪明。还可以尝试使用 Spark UI 检查 DAG 以获取更多信息,通常在 localhost:4040 可用。确保最后不要关闭 Session,否则您将无法检查 UI。
标签: dataframe apache-spark hive apache-spark-sql