首页 > 解决方案 > 如何在 Spark SQL 中的 WITH 子句中缓存子查询结果

问题描述

我想知道 Spark SQL 是否支持 WITH 子句中定义的查询的缓存结果。Spark SQL 查询是这样的:

with base_view as
(
 select some_columns from some_table
WHERE 
 expensive_udf(some_column) = true
)
... multiple query join based on this view

虽然此查询适用于 Spark SQL,但我注意到 UDF 多次应用于同一数据集。在这个用例中,UDF 非常昂贵。所以我想缓存 base_view 的查询结果,以便后续查询将从缓存的结果中受益。

PS 我知道您可以使用给定的查询创建和缓存一个表,然后在子查询中引用它。但是,在这种特定情况下,我无法创建任何表或视图。

标签: apache-sparkapache-spark-sql

解决方案


这是不可能的。WITH 结果在执行后无法持久化或替换为新的 Spark SQL 调用。


推荐阅读