Предположим, что ваши CSV-файлы имеют такую же структуру, а также давайте предположим, что вы написали свой скрипт на Python с использованием Spark API с небольшим преобразованием mapreduce, результат которого будет записан в Bigquery.
- Будет ли каждый узел пытаться прочитать все файлы и выполнить агрегирование ИЛИ каждый из них автоматически прочитает их соответствующее подмножество?
Нам не нужно заботиться оэтот.Ваша клиентская программа будет читать максимально быстро.Вам нужно только указать местоположение ваших файлов, например:
distFile = sc.textFile("file.csv")
distFile = sc.textFile("/hdfs/path/to/folder/fixed_file_name_*.csv")
ПРИМЕЧАНИЕ. Обратите внимание, что существуют дополнительные последствия для расположения файла (ов), это может быть локальный файл (file: //) или удаленный файл (hdfs: //).
Процесс параллельного чтения будет управляться YARN в зависимости от доступности рабочих.Как только эта первая стадия закончена, агрегация (преобразование) может быть выполнена.Этот второй этап также управляется YARN.Предположим, что ваш файл содержит только числовой столбец, тогда это преобразование:
val mapFile = distFile.map(x => x * 2)
переменная mapFile будет содержать файл с тем же числом строк, что и distFile, каждая новая строка является квадратомОригинальный номер.Как видите, вы записываете только преобразование, а YARN будет планировать выполнение, распределяя рабочую нагрузку среди доступных рабочих (подзадачи, выполняющие одну и ту же операцию с разными номерами).
После этого вы будетевозможность записи переменной mapFile в таблицу Bigquery с помощью команды bq load из соединителя Dataproc BQ .
Как эта вещь будет распараллелена между узлами кластера?
Это непростая работа, поскольку необходимо учитывать множество факторов, таких как пространство, память, доступность и т. Д.рабочая сторона, поэтому YARN создана для этого критического планирования решений.На самом деле, существуют разные подходы, которые YARN может использовать для определенных рабочих нагрузок при планировании заданий;CapacitySceduler или FairScheduler.При запуске задания в YARN UI появляется некоторая дополнительная информация.