#apache-spark #pyspark
Вопрос:
У меня очень длинная задача, которая создает кучу представлений с помощью Spark SQL, и на каком-то шаге я получаю следующую ошибку: pyspark.sql.utils.AnalysisException: The depth of view
foobar exceeds the maximum view resolution depth (100)
.
Я искал в Google и так и не смог найти никого с подобной ошибкой.
Я попытался кэшировать, что представление foobar
использует фреймы данных, но это не помогает. Я подумываю о создании временных таблиц в качестве обходного пути, так как я хотел бы не изменять текущую конфигурацию Spark, если это возможно, но я не уверен, что что-то упускаю.
ОБНОВЛЕНИЕ:
Я попытался создать таблицы в формате parquet для ссылок на таблицы, а не на представления, но все равно получаю ту же ошибку. Я применил это ко всем входным таблицам в SQL-запросе, который вызывает ошибку.
Если это имеет значение, я использую ANSI SQL, а не API python.
Ответ №1:
Я пропустил одну входную таблицу при создании физических таблиц. Как только я заметил, что ошибка исчезла, она заработала.
Поэтому я изменил свои инструкции SQL с этого:
CREATE OR REPLACE TEMPORARY VIEW `VIEW_NAME` AS SELECT ...
Для:
CREATE TABLE `TABLE_NAME` USING PARQUET AS SELECT ...
Чтобы создать все входные таблицы для рассматриваемого оператора. Это создает файлы паркета в spark_warehouse/
.