Этот пример определяет среднюю задержку прибытия большого набора полетных данных, который хранится в базе данных. Можно получить доступ к большим наборам данных с помощью объекта
с Database Toolbox™. После создания объекта databaseDatastore
DatabaseDatastore
можно написать алгоритм MapReduce, который определяет фрагментацию и сокращение данных. Также можно использовать длинный массив, чтобы запустить алгоритмы на больших наборах данных.
Объект DatabaseDatastore
не поддерживает использование параллельного пула с установленным Parallel Computing Toolbox™. Чтобы анализировать данные с помощью длинных массивов или алгоритмов MapReduce выполнения, установите глобальную среду выполнения быть локальным сеансом MATLAB®.
Этот пример использует предварительно сконфигурированный источник данных JDBC, чтобы создать соединение с базой данных. Для получения дополнительной информации смотрите, что configureJDBCDataSource
функционирует.
Создайте объект DatabaseDatastore
Установите глобальную среду выполнения быть локальным сеансом MATLAB®.
mapreducer(0);
Файл airlinesmall.csv
содержит большой набор полетных данных. Загрузите этот файл в таблицу базы данных Microsoft® SQL Server® airlinesmall
. Эта таблица содержит 123 523 записи.
Создайте соединение с базой данных к источнику данных JDBC MSSQLServerJDBCAuth
. Этот источник данных конфигурирует драйвер JDBC к базе данных Microsoft® SQL Server® с аутентификацией Windows®. Задайте пустое имя пользователя и пароль.
datasource = "MSSQLServerJDBCAuth";
username = "";
password = "";
conn = database(datasource,username,password);
Создайте объект DatabaseDatastore
с помощью соединения с базой данных и SQL-запроса. Этот SQL-запрос получает данные задержки прибытия из таблицы airlinesmall
.
sqlquery = 'select ArrDelay from airlinesmall';
dbds = databaseDatastore(conn,sqlquery);
Задайте функции картопостроителя и редуктора
К большим наборам данных процесса во фрагментах можно записать собственную функцию картопостроителя. Для каждого фрагмента в этом примере используйте meanArrivalDelayMapper.m
для:
Считайте данные задержки прибытия из объекта DatabaseDatastore
.
Определите количество задержек и общей задержки фрагмента.
Сохраните оба значения в KeyValueDatastore
.
Файл meanArrivalDelayMapper.m
содержит этот код.
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);
Также можно записать собственную функцию редуктора. В этом примере используйте meanArrivalDelayReducer.m
, чтобы считать промежуточные значения для количества задержек и общей задержки прибытия. Затем определите полную среднюю задержку прибытия. mapreduce
вызывает эту функцию редуктора только однажды, потому что функция картопостроителя добавляет всего один ключ в KeyValueStore
. Файл meanArrivalDelayReducer.m
содержит этот код.
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);
Запустите MapReduce Используя функции картопостроителя и редуктора
Чтобы определить среднее прибытие задерживаются в полетных данных, MapReduce выполнения с объектом DatabaseDatastore
, функцией картопостроителя и функцией редуктора.
outds = mapreduce(dbds,@meanArrivalDelayMapper,@meanArrivalDelayReducer);
********************************
* MAPREDUCE PROGRESS *
********************************
Map 0% Reduce 0%
Map 15% Reduce 0%
Map 30% Reduce 0%
Map 46% Reduce 0%
Map 61% Reduce 0%
Map 76% Reduce 0%
Map 92% Reduce 0%
Map 100% Reduce 0%
Map 100% Reduce 100%
Отобразите Вывод из MapReduce
Считайте таблицу из выходного datastore с помощью readall
.
outtab = readall(outds)
outtab =
1×2 table
Key Value
__________________ ________
'MeanArrivalDelay' [7.1201]
Таблица имеет только одну строку, содержащую одну пару "ключ-значение".
Отобразите среднюю задержку прибытия из таблицы.
meanArrDelay = outtab.Value{1}
meanArrDelay =
7.1201
Закройте объект DatabaseDatastore
и соединение с базой данных
close(dbds)
Смотрите также
TabularTextDatastore
| close
| database
| databaseDatastore
| mapreduce
| readall
| setdbprefs
Похожие темы
- Анализируйте большие данные в базе данных Используя длинные массивы
- Вычисление среднего значения с MapReduce MATLAB
- Импортируйте большие данные Используя объект DatabaseDatastore
- Создание эффективных алгоритмов с MapReduce MATLAB
- Начало работы с MapReduce (MATLAB)
Внешние веб-сайты