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