apache-spark - 如何解决 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。
解决方案
创建物理表时,我错过了一个输入表。一旦我发现这一点,错误就消失了。
所以我改变了我的 SQL 语句:
CREATE OR REPLACE TEMPORARY VIEW `VIEW_NAME` AS
SELECT ...
到:
CREATE TABLE `TABLE_NAME` USING PARQUET AS
SELECT ...
为有问题的语句创建所有输入表。这会在spark_warehouse/
.
推荐阅读
- facebook-php-webdriver - 使用 php webdriver 获取 JavaScript 生成元素的内容
- html - 直接在表单中发布对象
- python - 如何找到最小商店数量?
- javascript - 如何在 JavaScript 中合并两个对象数组
- python - 如何找到每个 n 个数组(Python)中包含的值?
- python - 使用硒向下滚动谷歌评论
- java - Android:将选定项目从微调器保存到 SharedPreferences
- reactjs - 获取后无法显示数据
- javascript - 如何将事件侦听器添加到 ag 网格单元格内的元素(使用 js 或 jquery,不是 angular,不是 reactjs,不是 vue)
- javascript - 更改 CSS flex 顺序会导致滚动