主要内容

在云端处理大数据

这个示例展示了如何访问云中的大型数据集,并使用MATLAB的大数据能力在云集群中处理它。

学习如何:

  • 访问Amazon Cloud上公开可用的大型数据集。

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

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

本例中的公共数据集是Wind Integration National Dataset Toolkit或Wind Toolkit[1],[2],[3],[4]的一部分。有关更多信息,请参见Wind Integration国家数据集工具包

需求

要运行此示例,必须在Amazon AWS中设置对集群的访问。在MATLAB中,您可以直接从MATLAB桌面在Amazon AWS中创建集群。在首页选项卡,平行菜单中,选择创建和管理集群.在集群配置文件管理器中,单击创建云计算集群.或者,您可以使用MathWorks Cloud Center在Amazon AWS中创建和访问计算集群。有关更多信息,请参见云中心入门

设置对远程数据的访问

本例中使用的数据集是Techno-Economic WIND工具包。它包含了2tb (TB)的数据,用于美国大陆2007年至2013年的风力估算和预测,以及大气变量

“技术经济风能工具包”可通过亚马逊网络服务获得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属性的群集配置文件。要编辑集群概要文件的属性,请使用集群概要文件管理器平行>创建和管理集群

寻找大数据子集

2tb的数据集非常大。这个例子向您展示了如何找到您想要分析的数据集的子集。该示例主要关注马萨诸塞州的数据。

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

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可以并行处理多个块。并行化使您能够使用本地工作人员在单个桌面上运行分析,或者扩展到集群以获得更多资源。当您在与数据相同的云服务中使用集群时,数据将停留在云中,您可以从改进的数据传输时间中获益。将数据保存在云中也更划算。这个示例在Amazon AWS的c4.8xlarge机器上使用18个工人运行,只花了不到20分钟。

如果在集群中使用并行池,MATLAB将使用集群中的worker处理这些数据。在集群中创建并行池。在下面的代码中,使用集群配置文件的名称。将脚本附加到池中,因为并行工作程序需要访问其中的helper函数。

p = parpool (“myAWSCluster”);
使用“myAWSCluster”配置文件启动并行池(parpool)…连接到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.3961.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支持功能

定义自定义读取功能

Techno-Economic WIND Toolkit中的数据以NetCDF文件的形式保存。定义自定义读取功能,将其数据读取到时间表中。有关读取NetCDF文件的详细信息,请参见NetCDF文件

函数t = ncReader(文件名)% NCREADER读取NetCDF文件(.nc),提取数据集并保存为时间表%获取NetCDF数据源信息fileInfo = ncinfo(文件名);%提取变量名和数据类型varNames =字符串({fileInfo.Variables.Name});varTypes =字符串({fileInfo.Variables.Datatype});%将变量名转换为表变量的有效名称如果任何(startsWith (varNames, (“4”“6”strVarNames = replace(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);= [fileLength numVars];t =时间表(“大小”tableSize,“VariableTypes”varTypes,“VariableNames”strVarNames,“步伐”samplePeriod,“开始时间”、开始时间);%用可变数据填写时间表k = 1:numVars t(:,k) = table(ncread(filename,varNames{k}));结束结束

参考文献

Draxl, C., B. M. Hodge, A. Clifton和J. McCaa。风集成国家数据集工具包概述和气象验证(技术报告,NREL / tp - 5000 - 61740)。国家可再生能源实验室,2015。

Draxl, C., B. M. Hodge, A. Clifton和J. McCaa。“风能整合国家数据集(Wind)工具包”。应用能源.2015年第151卷,第355-366页。

金,克利夫顿和霍奇。WIND工具包的功率输出验证(技术报告,NREL / tp - 5 - d00 - 61714)。国家可再生能源实验室,2014。

[4] Lieberman-Cribbin, W., C. Draxl和A. Clifton。使用WIND工具包验证代码指南(技术报告,NREL / tp - 5000 - 62595)。国家可再生能源实验室,2014。

另请参阅

|||

相关的例子

更多关于