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

Этот пример показывает, как создать datastore для файла Последовательности, содержащего данные в виде пар "ключ-значение". Затем можно считать и обработать данные один фрагмент за один раз. Файлами последовательности являются выходные параметры операций mapreduce то использование Hadoop®.

Установите соответствующую переменную окружения на местоположение, где Hadoop установлен. В этом случае установите переменную окружения MATLAB_HADOOP_INSTALL.

setenv('MATLAB_HADOOP_INSTALL','/mypath/hadoop-folder')

hadoop-folder является папкой, где Hadoop установлен, и mypath является путем к той папке.

Создайте 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. Цикл 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

Смотрите также

| | |

Похожие темы

Была ли эта тема полезной?