В этом примере показано, как создать хранилище данных для файла Sequence, содержащего данные ключевых значений. Затем можно считывать и обрабатывать данные по одному блоку за раз. Файлы последовательности являются выходами mapreduce операций с использованием Hadoop ®.
Задайте соответствующую переменную среды для расположения, в котором установлен Hadoop. В этом случае установите MATLAB_HADOOP_INSTALL переменная среды.
setenv('MATLAB_HADOOP_INSTALL','/mypath/hadoop-folder')hadoop-folder - папка, в которой установлен Hadoop и mypath - путь к этой папке.
Создайте хранилище данных из файла образца, mapredout.seq, с использованием datastore функция. Образец файла содержит уникальные ключи, представляющие коды авиаперевозчиков, и соответствующие значения, представляющие количество рейсов, выполняемых этим перевозчиком.
ds = datastore('mapredout.seq')
ds =
KeyValueDatastore with properties:
Files: {
' ...\matlab\toolbox\matlab\demos\mapredout.seq'
}
ReadSize: 1 key-value pairs
FileType: 'seq'datastore возвращает KeyValueDatastore. datastore функция автоматически определяет соответствующий тип создаваемого хранилища данных.
Установите ReadSize свойство до шести, чтобы каждый вызов read считывает не более шести пар ключ-значение.
ds.ReadSize = 6;
Считывание подмножеств данных из ds с использованием read функция в while цикл. Для каждого подмножества данных вычислите сумму значений. Сохранение суммы для каждого подмножества в массиве с именем sums. while цикл выполняется до hasdata(ds) прибыль false.
sums = []; while hasdata(ds) T = read(ds); T.Value = cell2mat(T.Value); sums(end+1) = sum(T.Value); end
Просмотр последнего подмножества прочитанных пар ключ-значение.
T
T =
Key Value
________ _____
'WN' 15931
'XE' 2357
'YV' 849
'ML (1)' 69
'PA (1)' 318Вычислите общее количество рейсов, выполняемых всеми перевозчиками.
numflights = sum(sums)
numflights =
123523
datastore | KeyValueDatastore | mapreduce | tall