Обмен данными между исполнителями в Apache Spark - PullRequest
0 голосов
/ 18 декабря 2018

Мой проект SPARK (написанный на Java) требует доступа (результаты запроса SELECT) к различным таблицам между исполнителями.

Одно из решений этой проблемы:

  1. Я создаю tempView
  2. , выбираю необходимые столбцы
  3. , используя forEach , преобразую DataFrame в Map.
  4. , передавая эту карту как широковещательная переменная среди исполнителей.

Однако я обнаружил, что

  1. существует много сложных запросов, результат которых не может быть сохранен непосредственно в Map
  2. Таблицы очень большие и, следовательно, создание 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

1 Ответ

0 голосов
/ 18 декабря 2018

Вы можете передавать DataFrame.См. документацию

...