主要内容

处理大数据在云端

这个例子展示了如何访问云中的大数据集和过程在云计算集群中使用MATLAB用于大数据的功能。

学习如何:

  • 访问一个公开的大数据集在亚马逊云。

  • 找到并选择一个有趣的这个数据集的子集。

  • 使用数据存储,高数组和并行计算工具箱来处理这个子集在不到20分钟。

公共数据集在这个例子中是风集成国家数据集工具包的一部分,或风工具包[1],[2],[3],[4]。有关更多信息,请参见风集成工具包国家数据集

需求

要运行这个例子,您必须建立在Amazon AWS访问集群。在MATLAB中,您可以创建集群在Amazon AWS直接从MATLAB桌面。在选项卡,平行菜单中,选择创建和管理集群。在集群配置文件管理器,单击创建云计算集群。或者,您可以使用MathWorks云中心创建和访问Amazon AWS计算集群。有关更多信息,请参见开始使用云计算中心

设置访问远程数据

在这个例子中使用的数据集是技术经济风工具包。它包含2结核病(TB)风力发电的数据估计和预测大气变量从2007年到2013年在美国大陆

技术经济风工具包可以通过Amazon Web服务的位置s3: / / pywtk-data。它包含两个数据集:

  • s3: / / pywtk-data / met_data计量数据

  • s3: / / pywtk-data / fcst_data——预测数据

在Amazon S3与远程数据,你必须定义环境变量AWS凭证。有关设置访问远程数据的更多信息,见使用远程数据。在以下代码中,替换YOUR_AWS_ACCESS_KEY_IDYOUR_AWS_SECRET_ACCESS_KEY用你自己的Amazon AWS的凭证。

setenv (“AWS_ACCESS_KEY_ID”,“YOUR_AWS_ACCESS_KEY_ID”);setenv (“AWS_SECRET_ACCESS_KEY”,“YOUR_AWS_SECRET_ACCESS_KEY”);

这个数据集需要您指定地理区域,所以你必须设置相应的环境变量。

setenv (“AWS_DEFAULT_REGION”,“us-west-2”);

给工人们在集群访问远程数据,添加这些环境变量名称EnvironmentVariables您的集群配置文件的属性。编辑您的集群配置文件的属性,使用集群配置文件管理器平行>创建和管理集群

找到大数据的子集

2 TB的数据集是相当大的。这个例子向您展示了如何找到数据集的一个子集,您想要分析。这个例子着重于马萨诸塞州的数据。

首先获得id识别计量站在马萨诸塞州,并确定包含他们的计量信息的文件。元数据信息对于每一个站在文件命名three_tier_site_metadata.csv。因为这个数据是小,适合在内存中,您可以从MATLAB客户机访问它readtable。您可以使用readtable函数直接访问S3 bucket的公开数据,而不需要编写特殊代码。

tMetadata = readtable (“s3: / / pywtk-data / three_tier_site_metadata.csv”,“ReadVariableNames”,真的,“TextType”,“字符串”);

找出哪些州列出在这个数据集,使用独特的

州=独特(tMetadata.state)
州=50×1的字符串数组”““阿拉巴马”“亚利桑那”“阿肯色”“加州”“科罗拉多”“康涅狄格”“特拉华”“特区”“佛罗里达”“格鲁吉亚”“爱达荷州”“伊利诺斯州”“印第安纳州”“爱荷华州”“堪萨斯”“肯德基”“路易斯安那州”“缅因”“马里兰”“麻省”“密歇根”“明尼苏达州”“密西西比”“密苏里”“蒙大拿”“内布拉斯加”“内华达”“新汉普郡”“新泽西”“新墨西哥”“纽约”“北卡罗来纳”“北达科塔州”“俄亥俄”“俄克拉荷马”“俄勒冈州”“宾夕法尼亚”“罗德岛”“南卡罗来纳”“南达科塔州”“田纳西”“德州”“犹他”“佛蒙特州”“弗吉尼亚”“华盛顿”“西维吉尼亚州”“威斯康辛州”“怀俄明”

识别哪些站位于马萨诸塞州。

指数= tMetadata。状态= =“麻省”;siteId = tMetadata{指数,“site_id”};

数据对于一个给定的站是包含在一个文件,遵循此命名约定:s3: / / / site_id.nc pywtk-data / met_data /文件夹,在那里文件夹最近的整数小于或等于site_id / 500。使用这个惯例,组成一个文件位置。

文件夹=地板(siteId / 500);fileLocations =组成(“s3: / / pywtk-data / met_data / % d / % d.nc”、文件夹、siteId);

处理大数据

您可以使用数据存储和高数组访问和处理数据,并不适合在内存中。当执行大数据计算,MATLAB根据需要访问远程数据较小的部分,所以您不需要下载整个数据集。有着高大的数组,MATLAB自动数据分割为小块,适合在内存中进行处理。

如果你有并行计算工具箱,MATLAB可以处理许多并行块。并行化使您能够运行一个分析与当地工人,在一个桌面或扩大集群的更多资源。当你使用一个集群在同一云服务的数据,这些数据在云端,你受益于改进的数据传输时间。使云中的数据也更划算。这个例子跑在不到20分钟使用18个工人在Amazon AWS c4.8xlarge机器上。

如果你使用一个平行池在一个集群中,MATLAB处理这些数据使用集群中的工人。创建一个集群中的平行池。在以下代码中,而是使用集群的配置文件的名称。将脚本附加到游泳池,因为并行工人需要访问一个helper函数。

p = parpool (“myAWSCluster”);
开始平行池(parpool)使用“myAWSCluster”概要文件…连接到18岁的工人。
addAttachedFiles (p, mfilename (“fullpath”));

创建一个数据存储与计量数据的站在马萨诸塞州。数据的形式网络常见的数据形式(NetCDF)文件,你必须使用一个定制的读函数来解释它们。在这个例子中,这个函数命名ncReader和NetCDF数据读入时间表。你可以探索其内容结束时,这个脚本。

dsMetrology = fileDatastore (fileLocations,“ReadFcn”@ncReader,“UniformRead”,真正的);

创建一个高的时间表与计量数据存储的数据。

ttMetrology =高(dsMetrology)
ttMetrology =米×6时间表时间wind_speed wind_direction功率密度温度压力______ _________ ___________ ________ ____________________ __________ * * * 01 - 1月- 2007就是5.905 189.35 3.3254 1.2374 269.74 97963 01 - 1月- 2007年00:05:00 5.8898 188.77 3.2988 1.2376 269.73 97959年01 - 1月- 2007 00:10:00 5.9447 187.85 3.396 1.2376 269.71 97960 01 - 1月- 2007年00:15:00 6.0362 187.05 3.5574 1.2376 269.68 97961年01 - 1月- 2007 00:20:00 6.1156 186.49 3.6973 1.2375 269.83 97958 01 - 1月- 2007 00:25:00 6.2133 185.71 3.8698 1.2376 270.03 97952 01 - 1月- 2007年00:30:00 6.3232 184.29 4.0812 1.2379 270.19 97955年01 - 1月- 2007 00:35:00 6.4331 182.51 4.3382 1.2382 270.3 97957::::::::::::::

每月的平均温度groupsummary,由此产生的高表。针对性能、MATLAB延缓大多数高操作,直到数据是必要的。在这种情况下,绘制数据触发延迟评价计算。

meanTemperature = groupsummary (ttMetrology,“时间”,“月”,“的意思是”,“温度”);meanTemperature = sortrows (meanTemperature);

策划的结果。

图;情节(meanTemperature.mean_temperature“* - - - - - -”);ylim(300年[260]);xlim ([1 12 * 7 + 1]);xticks (1:12:12 * 7 + 1);xticklabels ([“2007”,“2008”,“2009”,“2010”,“2011”,“2012”,“2013”,“2014”]);标题(“平均温度在马萨诸塞州2007 - 2013”);包含(“年”);ylabel (“温度(K)”)

许多MATLAB函数支持高数组,所以您可以执金宝app行各种计算在大数据集使用熟悉的语法。支持功能的更多信息,请参阅金宝app金宝app支持功能

定义定制的读函数

技术经济风工具箱中的数据保存在NetCDF文件。定义一个自定义函数来读取的数据读入一个时间表。读取NetCDF文件的更多信息,请参阅NetCDF文件

函数t = ncReader(文件名)% NCREADER NetCDF文件读取(.nc),提取数据并保存设置为一个时间表%得到NetCDF数据源的信息fileInfo = ncinfo(文件名);%提取变量名称和数据类型varNames =字符串({fileInfo.Variables.Name});varTypes =字符串({fileInfo.Variables.Datatype});%变量名称转换成有效的名称表变量如果任何(startsWith (varNames, (“4”,“6”]))strVarNames =取代(varNames [“4”,“6”]、[“四”,“6”]);其他的strVarNames = varNames;结束%提取每个变量的长度fileLength = fileInfo.Dimensions.Length;%提取初始时间戳,样本期和创建时间轴tAttributes = struct2table (fileInfo.Attributes);开始时间= datetime (cell2mat (tAttributes.Value(包含(tAttributes.Name,“start_time”))),“ConvertFrom”,“epochtime”);samplePeriod =秒(cell2mat (tAttributes.Value(包含(tAttributes.Name,“sample_period”))));%创建输出的时间表numVars =元素个数(strVarNames);tableSize = [fileLength numVars];t =时间表(“大小”tableSize,“VariableTypes”varTypes,“VariableNames”strVarNames,“步伐”samplePeriod,“开始时间”、开始时间);%与可变数据填写时间表k = 1: numVars t (:, k) =表(ncread(文件名,varNames {k}));结束结束

引用

[1]Draxl C。,B. M. Hodge, A. Clifton, and J. McCaa.风的概述和气象验证集成工具包国家数据集(技术报告,NREL / tp - 5000 - 61740)。黄金有限公司:国家可再生能源实验室,2015年。

[2]Draxl C。,B. M. Hodge, A. Clifton, and J. McCaa. "The Wind Integration National Dataset (WIND) Toolkit."应用能源。151卷,2015年,页355 - 366。

[3]国王,J。,A. Clifton, and B. M. Hodge.验证输出功率的风力工具包(技术报告,NREL / tp - 5 - d00 - 61714)。黄金有限公司:国家可再生能源实验室,2014年。

[4]Lieberman-Cribbin, W。,C. Draxl, and A. Clifton.使用风工具箱验证代码的指南(技术报告,NREL / tp - 5000 - 62595)。黄金有限公司:国家可再生能源实验室,2014年。

另请参阅

|||

相关的例子

更多关于