Мой проект SPARK (написанный на Java) требует доступа (результаты запроса SELECT) к различным таблицам между исполнителями.
Одно из решений этой проблемы:
- Я создаю tempView
- , выбираю необходимые столбцы
- , используя forEach , преобразую
DataFrame
в Map
. - , передавая эту карту как широковещательная переменная среди исполнителей.
Однако я обнаружил, что
- существует много сложных запросов, результат которых не может быть сохранен непосредственно в
Map
- Таблицы очень большие и, следовательно, создание
Map
большого размера и передача его исполнителям в качестве широковещательной переменной не звучит эффективно.
Вместо этого мы можем загрузить таблицы в-память с использованием load
, который может быть разделен между исполнителями?
void org.apache.spark.sql.Dataset.createOrReplaceTempView(String viewName)
или void org.apache.spark.sql.Dataset.createGlobalTempView(String viewName) throws AnalysisException
Метод полезен для этой цели?
ИСКРАСНАЯ ВЕРСИЯ: 2.3.0