首页 > 解决方案 > 如何解决 Spark 中的最大视图深度误差?

问题描述

我有一个很长的任务,它使用 Spark SQL 创建一堆视图,并且在某个步骤中出现以下错误:pyspark.sql.utils.AnalysisException: The depth of view foobar exceeds the maximum view resolution depth (100)

我一直在谷歌和 SO 中搜索,找不到任何有类似错误的人。

我已经尝试缓存视图foobar使用 DataFrames,但这没有帮助。我正在考虑创建临时表作为一种解决方法,因为如果可能的话,我不想更改当前的 Spark 配置,但我不确定我是否遗漏了一些东西。

更新
我尝试以镶木地板格式创建表来引用表而不是视图,但我仍然遇到同样的错误。我将其应用于导致错误的 SQL 查询的所有输入表。

如果它有所作为,我使用的是 ANSI SQL,而不是 python API。

标签: apache-sparkpyspark

解决方案


创建物理表时,我错过了一个输入表。一旦我发现这一点,错误就消失了。

所以我改变了我的 SQL 语句:

CREATE OR REPLACE TEMPORARY VIEW `VIEW_NAME` AS
SELECT ...

到:

CREATE TABLE `TABLE_NAME` USING PARQUET AS
SELECT ...

为有问题的语句创建所有输入表。这会在spark_warehouse/.


推荐阅读