分析大数据在数据库使用MapReduce
这个例子中确定的延误意味着大量的飞行数据存储在数据库中。您可以访问使用一个大型数据集
对象与数据库工具箱™。在创建一个databaseDatastore
DatabaseDatastore
对象,您可以编写一个MapReduce算法,定义了数据分块和减少。或者,您可以使用一个高数组在大型数据集上运行算法。
的DatabaseDatastore
对象不支持使用并行池与并行计算工金宝app具箱™安装。使用高阵列分析数据或运行MapReduce算法,设置全局执行环境是当地的MATLAB®会话。
这个例子使用一个预先配置的JDBC数据源创建数据库连接。有关更多信息,请参见
函数。configureJDBCDataSource
创建DatabaseDatastore
对象
设置全局执行环境是当地的MATLAB®会话。
mapreduce (0);
该文件airlinesmall.csv
包含大量的飞行数据。这个文件加载到Microsoft®SQL Server®数据库表中airlinesmall
。此表包含123523条记录。
创建一个数据库连接到JDBC数据源MSSQLServerJDBCAuth
。这个数据源配置JDBC驱动程序到Microsoft®SQL Server使用Windows®®数据库的身份验证。指定一个空白的用户名和密码。
数据源=“MSSQLServerJDBCAuth”;用户名=”“;密码=”“;康涅狄格州=数据库(数据源、用户名、密码);
创建一个DatabaseDatastore
使用数据库连接对象和一个SQL查询。这个SQL查询检索延误的数据airlinesmall
表。
sqlquery =“从airlinesmall选择ArrDelay”;dbd = databaseDatastore(康涅狄格州,sqlquery);
定义映射器和减速机的功能
块来处理大型数据集,您可以编写自己的映射函数。在这个例子中,对于每个块使用meanArrivalDelayMapper.m
:
读的延误数据
DatabaseDatastore
对象。确定的延误和总延迟块。
两个值存储在
KeyValueDatastore
。
的meanArrivalDelayMapper.m
文件包含这个代码。
函数meanArrivalDelayMapper(数据、信息、intermKVStore)% MeanMapReduceExample映射函数。% 2014年版权MathWorks公司。ArrDelay % n×1表数据。删除缺失值:数据(isnan (data.ArrDelay):) = [];%记录部分的数量和金额和减速器积累。partCountSum = [(data.ArrDelay),长度总和(data.ArrDelay)];添加(intermKVStore“PartialCountSumDelay”,partCountSum);
您也可以编写自己的减速机的功能。在这个例子中,使用meanArrivalDelayReducer.m
读中间值的延误和总延误。然后,确定总体的意思是推迟到来。mapreduce
调用这个减速器函数只有一次因为映射函数添加一个关键KeyValueStore
。的meanArrivalDelayReducer.m
文件包含这个代码。
函数meanArrivalDelayReducer (intermKey intermValIter outKVStore)% MeanMapReduceExample减速功能。% 2014年版权MathWorks公司。% intermKey是“PartialCountSumDelay”数= 0;金额= 0;而hasnext (intermValIter) countSum = getnext (intermValIter);数=数+ countSum (1);和=和+ countSum (2);结束meanDelay = /数总和;%的键-值对添加到outKVStore将成为mapreduce的输出添加(outKVStore“MeanArrivalDelay”,meanDelay);
使用映射器和减速器运行MapReduce函数
确定平均延误飞行数据,运行MapReduce的DatabaseDatastore
对象,映射函数,减速机的功能。
outds = mapreduce (dbd @meanArrivalDelayMapper @meanArrivalDelayReducer);
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * MAPREDUCE进展* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *地图地图15%减少0% 30% 0%减少0%减少0%地图46%减少0% 61% 0% 76%减少0%地图地图地图100%减少0% 100% 92%减少0%减少100%
MapReduce的显示输出
读取表从输出数据存储使用readall
。
outtab = readall (outds)
outtab = 1×2表键值_____________ ________的MeanArrivalDelay [7.1201]
桌子上只有一行包含一个键-值对。
从表中显示平均延误。
meanArrDelay = outtab.Value {1}
meanArrDelay = 7.1201
关闭DatabaseDatastore
对象和数据库连接
关上(dbd)
另请参阅
setdbprefs
|数据库
|databaseDatastore
|readall
|关闭
|mapreduce
|TabularTextDatastore