Обмен данными между исполнителями в Apache Spark
Мой проект 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
Метод полезен для этого?
SPARK VERSION: 2.3.0
1 ответ
Решение