Производительность SPARK TempView

Я нашел эту цитату на SO 44011846:

Unlike a traditional temp table, a temp view is NOT materialized at all even to memory. It's useful for accessing data in SQL but understand that its statements have to be evaluated EVERY time it's accessed –

Значит ли это, что он вернется обратно в Hive, если Hive является источником TempView?

Я так думаю, и поэтому большое количество повторных обращений является проблемой с точки зрения производительности.

Да, используйте cache(), если вы хотите получить доступ к данным несколько раз.

Shaido 06.06.2018 11:30

@Shaido Но что тогда будет кешироваться при каждом вызове? Каждый вызов может смотреть на разные аспекты таблицы TempTable и фактически быть отдельным утверждением.

thebluephantom 06.06.2018 11:33

В таких ситуациях можно использовать функцию cacheTable. Я считаю, что кешируется вся таблица, см. Этот вопрос: stackoverflow.com/questions/39248621/…

Shaido 06.06.2018 11:39
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
915
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Spark 1.6

Временная таблица / представление не хранятся в памяти. Они полезны только для доступа к данным из куста / rdbms.

Если вы используете Hive-

hiveContext.select("select * from tableA").registerTempTable("tableA")

Вышеуказанный оператор регистрирует только временную таблицу. Это трансформация. Когда выполняется какое-либо действие, он выполняет sql в улье и создает временную таблицу. Он будет выполняться каждый раз, когда выполняется какое-либо действие.

Если вы хотите кэшировать таблицу в памяти, вам нужно использовать следующую инструкцию:

 hiveContext.cacheTable("tableA")

Это ленивая оценка. Всякий раз, когда выполняется какое-либо действие, он выполняет sql и сохраняет временную таблицу в памяти. В следующий раз действие выполняется над таблицей памяти. Он не будет оцениваться каждый раз.

Spark2.0

registerTempTable заменен на createOrReplaceTempView

Другие вопросы по теме