В этом примере показано, как создать datastore для файла Sequence, содержащего данные в виде пары "ключ-значение". Затем можно считать и обрабатывать данные по одному блоку за раз. Файлы последовательности являются выходами mapreduce
операции, которые используют Hadoop®.
Установите соответствующую переменную окружения в том месте, где установлен Hadoop. В этом случае установите MATLAB_HADOOP_INSTALL
переменная окружения.
setenv('MATLAB_HADOOP_INSTALL','/mypath/hadoop-folder')
hadoop-folder
- папка, в которой установлен и mypath
Hadoop - путь к этой папке.
Создайте datastore из файла образца, 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
функция автоматически определяет подходящий тип создаваемого datastore.
Установите ReadSize
свойство для шести так, чтобы каждый вызов read
читает самое большее шесть пары "ключ-значение".
ds.ReadSize = 6;
Считайте подмножества данных из ds
использование read
функция в while
цикл. Для каждого подмножества данных вычислите сумму значений. Сохраните сумму для каждого подмножества в массиве с именем sums
. The while
цикл выполняется до hasdata(ds)
возвращает false
.
sums = []; while hasdata(ds) T = read(ds); T.Value = cell2mat(T.Value); sums(end+1) = sum(T.Value); end
Просмотрите последнее подмножество пар "ключ-значение" read.
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