Создание распределенного СДР в Spark - PullRequest
1 голос
/ 16 октября 2019

Мне известно, что для создания RDD у нас есть 2 способа:

  1. Распараллелить существующую коллекцию в программе драйвера.
  2. Ссылка на данные из внешней системы хранения, напримерHDFS, HBase и т. Д.

Однако мне хотелось бы знать, что происходит, когда я читаю данные из озера данных, такого как (хранилище озера данных Azure Gen 2, ADLS Gen 2). Например, если у меня есть следующая команда:

df = spark.read.csv("path to ADLS Gen 2").rdd

Я хотел бы знать, как считываются данные;это в драйвер? Или это непосредственно в рабочие узлы?

Тогда, где происходит обработка, если мы применили какое-то преобразование к Dataframe или RDD? этот вопрос существует только в том случае, если данные загружаются в узел драйвера.

Обратите внимание, что я новичок в Spark и все еще изучаю этот инструмент.

1 Ответ

1 голос
/ 16 октября 2019

Данные считываются на рабочих узлах, если только программа, запущенная в кластере, не заставляет узел драйвера читать их. Конечно, рабочие Spark не загружают весь RDD в свою локальную память, какой раздел rdd попадает в какой рабочийобрабатывается диспетчером драйверов.

Это означает, что при применении преобразований к сеансу Spark предпринимает следующие шаги:

1. Создает группу обеспечения доступности баз данных для вычисления преобразований и действий в большинстве случаев. Возможный эффективный способ.

2.Отправляет файл JAR, содержащий общую информацию о программе и конкретную информацию об обработке, которую должен применить этот работник, ко всем активным работникам кластера.

Вышеданы очень абстрактно, поскольку при развертывании приложения внутри искрового кластера происходит гораздо больше, но основная идея заключается в том, что рабочие читают файлы, и то, что они должны с ними делать, исходит из драйверачерез сеть

...