Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Calcular valor medio con MapReduce

En este ejemplo se muestra cómo calcular la media de una sola variable en un conjunto de datos mediante.mapreduce Muestra un uso simple de una clave, un cálculo mínimo y un estado intermedio (acumulando suma intermedia y recuento).mapreduce

Preparar datos

Cree un almacén de datos utilizando el conjunto de información.airlinesmall.csv Este conjunto de datos de 12 megabyte contiene 29 columnas de información de vuelo para varias aerolíneas, incluidas las horas de llegada y salida. En este ejemplo, seleccione (retardo de llegada de vuelo) como variable de interés.ArrDelay

ds = datastore('airlinesmall.csv', 'TreatAsMissing', 'NA'); ds.SelectedVariableNames = 'ArrDelay'; 

El almacén de datos trata los valores como ausentes y reemplaza los valores que faltan por valores predeterminados.'NA'NaN Además, la propiedad le permite trabajar solo con la variable de interés seleccionada, que puede verificar utilizando.SelectedVariableNamespreview

preview(ds) 
 ans =    8x1 table      ArrDelay     ________          8            8           21           13            4           59            3           11     

Ejecute MapReduce

La función requiere una función de mapa y una función de reducción como entradas.mapreduce El asignador recibe fragmentos de datos y genera resultados intermedios. El reductor Lee los resultados intermedios y produce un resultado final.

En este ejemplo, el asignador encuentra el recuento y la suma de los retrasos de llegada en cada fragmento de datos. A continuación, el asignador almacena estos valores como valores intermedios asociados a la clave.'PartialCountSumDelay'

Mostrar el archivo de función de mapa.

 function meanArrivalDelayMapper (data, info, intermKVStore) % Mapper function for the MeanMapReduceExample.  % Copyright 2014 The MathWorks, Inc.  % Data is an n-by-1 table of the ArrDelay. Remove missing value first: data(isnan(data.ArrDelay),:) = [];  % Record the partial counts and sums and the reducer will accumulate them. partCountSum = [length(data.ArrDelay), sum(data.ArrDelay)]; add(intermKVStore, 'PartialCountSumDelay',partCountSum);  

El reductor acepta el recuento y la suma de cada fragmento almacenado por el asignador. Resume los valores para obtener el recuento total y la suma total. El retardo de llegada medio general es una simple División de los valores. solo llama a este reductor una vez, ya que el asignador solo agrega una única clave única.mapreduce El reductor utiliza para agregar un solo par clave-valor a la salida.add

Visualice el archivo de función de reducción.

 function meanArrivalDelayReducer(intermKey, intermValIter, outKVStore) % Reducer function for the MeanMapReduceExample.  % Copyright 2014 The MathWorks, Inc.  % intermKey is 'PartialCountSumDelay' count = 0; sum = 0; while hasnext(intermValIter)    countSum = getnext(intermValIter);    count = count + countSum(1);    sum = sum + countSum(2); end  meanDelay = sum/count;  % The key-value pair added to outKVStore will become the output of mapreduce  add(outKVStore,'MeanArrivalDelay',meanDelay);  

Se utiliza para aplicar el mapa y reducir las funciones al almacén de datos,.mapreduceds

meanDelay = mapreduce(ds, @meanArrivalDelayMapper, @meanArrivalDelayReducer); 
******************************** *      MAPREDUCE PROGRESS      * ******************************** Map   0% Reduce   0% Map  16% Reduce   0% Map  32% Reduce   0% Map  48% Reduce   0% Map  65% Reduce   0% Map  81% Reduce   0% Map  97% Reduce   0% Map 100% Reduce   0% Map 100% Reduce 100% 

Devuelve un almacén de datos, con archivos en la carpeta actual.mapreducemeanDelay

Lea el resultado final del almacén de datos de salida,.meanDelay

readall(meanDelay) 
 ans =    1x2 table             Key             Value       __________________    ________      'MeanArrivalDelay'    [7.1201]  

Consulte también

|

Temas relacionados