Data Programming Course  Documentation

%======================================
% La funzione Map riceve un chunk di dati,
% li riorganizza ed esegue eventuali calcoli
% preliminari prima di applicare la funzione
% per cui è effettivamente ideata.
% A livello pratico, in una sommatoria, procederà
% a sommare tra loro tutti le coppie chiave-valore
% in un dato intermedio detto KeyValueStore.
% Il numero di chiamate della funzione MAP da
% parte del MapReduce sarà pari al numero di chunks
% il cui si suddivide l'input.
% Il KeyValueStore intermedio raggruppa tutti i
% valori con chiavi uniche!
%======================================

function MeanDistMapFun( data, info, intermKVStore )
% Funzione MAP del paradigma Map Reduce per il calcolo
% della media di distanza tra i voli. 

% Inputs: data - dati effettivi
%         info - informazioni per la lettura legate al chunk
%         intermKVStore - KeyValueStore intermedio
%                         oggetto di cui la Map ha bisogno
%                         per sommare le coppie chiave-valore

% Considero solamente gli elementi che non sono vuoti
% all'interno dei miei dati
distances = data.Distance(~isnan(data.Distance));

% Creo un vettore di due elementi: distanza totale 
%                                  conteggio del chunk
sumLenValue = [sum(distances) length(distances)];

% Sommo i valori ottenuti nella variabile intermedia
% mettendogli la chiave 'sumAndLength'
add(intermKVStore, 'sumAndLength', sumLenValue);

% Lanciando il Map su tutti i chunk del data set
% avrò al termine la distanza totale e il conteggio
% per ogni chunk all'interno di intermKVStore

end