Как кэшировать результат подзапроса в предложении WITH в Spark SQL - PullRequest
0 голосов
/ 18 февраля 2019

Интересно, поддерживает ли 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 Я знаю, что вы можете создать и кэшировать таблицу с данным запросом, а затем ссылаться на нее в подзапросах.,Однако в этом конкретном случае я не могу создавать таблицы или представления.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Предложение WITH позволяет присвоить имя временному результирующему набору, чтобы его можно было повторно использовать несколько раз в одном запросе.Я верю, что он просит материализованное представление.

0 голосов
/ 18 февраля 2019

Это невозможно.Результат WITH не может быть сохранен после выполнения или заменен новым вызовом Spark SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...