Формат выходных файлов

01Выходные данные задачи Hadoop могут быть записаны в различных форматах и в различные конечные точки. Процесс форматирования контролируется объектами, реализующими классы OutputFormat, RecordWriter и OutputCommitter.

Задача объектов типа OutputFormat состоит в проверке спецификации выходной директории (или любой другой точки, в которую перенаправляются данные) с помощью метода checkOutputSpecs и создании объектов RecordWriter и OutputCommitter с помощью getRecordWriter и getOutputCommitter.

Управление выводом осуществляется с помощью объекта типа OutputCommitter, который используется для подготовки конечной точки для принятия данных. Используемый по умолчанию FileOutputCommitter создает для каждого задания временную рабочую директорию и для каждого подзадания (для каждого узла) отдельную поддиректорию, в которую записываются выходные данные. После вызова commitJob данные из каждой поддиректории перемещаются в конечную выходную директорию, а временная директория удаляется. Смысл основных методов описан в таблице ниже. Таким образом, для изменения только формата данных собственной реализации OutputCommitter не требуется.

МетодРеализация
setupJobсоздание выходной директории
setupTask
commitJobперемещение файлов из временной
commitTaskв выходную директорию
abortJobудаление временных директорий
abortTask
needsTaskCommitзаписано ли что-нибудь во временную директорию?
Методы класса OutputCommitter.

Задания

Задание H7

02Переопределите классы RecordWriter и FileOutputFormat для записи спектров из предыдущего задания в файлы в формате NetCDF. Ввиду невозможности работы с потоками в библиотеке NetCDF файлы придется создавать вручную, минуя объект FileSystem. Для каждой станции и года должен быть создан отдельный файл с расширением nc. В файле должны быть определены время и частота в качестве измерений и параметры спектров (i,j,k,w,d) в качестве переменных. Значения измерений сохранять не нужно. Проверить работу программы можно с помощью команды ncdump. Примеры работы с форматом NetCDF: https://www.unidata.ucar.edu/software/netcdf/examples/programs/.

Полезные ссылки