exponenta event banner

Чтение и анализ файла последовательности Hadoop

В этом примере показано, как создать хранилище данных для файла 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

См. также

| | |

Связанные темы