pyspark 如何解决Spark中的最大景深误差?

ltqd579y  于 2024-01-06  发布在  Spark
关注(0)|答案(2)|浏览(188)

我有一个很长的任务,使用Spark SQL创建了一堆视图,在某个步骤中我得到了以下错误:pyspark.sql.utils.AnalysisException: The depth of view 'foobar' exceeds the maximum view resolution depth (100)
我一直在谷歌和SO搜索,找不到任何人有类似的错误。
我尝试过缓存视图foobar,但这没有帮助。我正在考虑创建临时表作为解决方案,因为我希望尽可能不更改当前的Spark配置,但我不确定是否遗漏了什么。

更新:我尝试创建parquet格式的表来引用表而不是视图,但我仍然得到相同的错误。我将其应用于导致错误的SQL查询的所有输入表。

如果有区别的话,我使用的是ANSI SQL,而不是Python API。

odopli94

odopli941#

溶液

使用parque表毕竟为我工作。我发现我仍然缺少一个表坚持,所以这就是为什么它不会工作。
所以我改变了我的SQL语句:

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

字符串
收件人:

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


将所有关键视图移动到spark_warehouse/下的 parquet 上-或者您配置的任何东西。

注意:

这将把表写到主节点的磁盘上。确保你有足够的磁盘,或者考虑转储到外部数据存储中,比如s3或其他什么。使用检查点读取this作为替代方案,现在是首选方案。

展开查看全部
kr98yfug

kr98yfug2#

我遇到了同样的错误,当我用相同的名称命名另一个视图时,你可以搜索名称以确保你的视图名称没有定义

相关问题