Формат выходных файлов
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/.