主要内容

在云端处理大数据

此示例显示如何访问云中的大数据并使用Matlab功能进行大数据的Matlab功能在云群中进行处理。

学习如何:

  • 访问在Amazon Cloud上的公共数据集。

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

  • 使用数据存储,高阵列和并行计算工具箱在不到20分钟内处理此子集。

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

要求

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

设置对远程数据的访问

在此示例中使用的数据集是技术经济风格工具包。它包含2 TB(TberByte)用于风电估算和预测,以及大陆美国2007年至2013年的大气变量。

技术经济风速工具包通过亚马逊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有了自己的亚马逊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”“美国 - 西2”);

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

查找大数据的子集

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

首先获取标识Massachusetts的计量站的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://pywtk-data/met_data/folder/site_id.nc.,在那里文件夹是距离小于或等于的最接近的整数site_id / 500..使用此约定,为每个站撰写文件位置。

文件夹=楼层(Siteid / 500);fileLocations = compose(“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,“统一read”,真的);

使用数据存储区的计量数据创建高节奏时间表。

ttmetrology = tall(dsmettology)
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 = Commansumary(TTMetrology,“时间”“月”“意思”“温度”);MeanTemperature = Sortrows(manimtemperature);

绘制结果。

数字;绘图(ManiCherature.mean_temperature,“*  - ”);ylim([260 300]);XLIM([1 12 * 7 + 1]);XTICKS(1:12:12 * 7 + 1);XTicklabels([“2007”“2008”“2009”“2010”“2011”“2012”“2013”“2014”]);标题(“马萨诸塞州的平均气温2007-2013”);Xlabel(“年”);ylabel(“温度(k)”

许多MATLAB函数支持高阵列,因此您可以使万博1manbetx用熟悉的语法对大数据集进行各种计算。有关支持功能的更多信息,请参阅万博1manbetx万博1manbetx支持功能

定义自定义读取功能

技术经济风格工具包中的数据保存在netcdf文件中。定义自定义读取功能以将其数据读入时间表。有关读取NetCDF文件的更多信息,请参阅NetCDF文件

功能t = ncreader(文件名)%ncreader读取netcdf文件(.nc),提取数据集并另存为时间表%获取有关NetCDF数据源的信息fileInfo = ncinfo(文件名);%提取变量名和数据类型varnames = string({fileinfo.variables.name});vartypes = string({fileinfo.variables.datatype});%将变量名称转换为表变量的有效名称如果任何(startswith(varnames,[“4”“6”]))strvarnames =替换(varnames,[“4”“6”],[“四”“六”]);其他的strVarNames = varNames;结束%提取每个变量的长度fileLength = fileinfo.dimensions.length;%提取初始时间戳,采样周期并创建时间轴tattributes = struct2table(fileinfo.attributes);starttime = datetime(cell2mat(tattritributes.value(包含(tattributes.name,“开始时间”))),“转兑”“epochtime”);samplePeriod =秒(cell2mat (tAttributes.Value(包含(tAttributes.Name,“sample_period”))))));%创建输出时间表numVars =元素个数(strVarNames);= [fileLength numVars];t =时间表(“大小”,拨打,'variabletypes'varTypes,'variablenames',strvarnames,'timestep',sampleperiod,'开始时间',开始时间);%填写可变数据的时间表为了k = 1:numvars t(:,k)= table(ncread(filename,varnames {k});结束结束

参考

Draxl, C., B. M. Hodge, A. Clifton和J. McCaa。Wind Integration National DataSet Toolkit的概述和气象验证(技术报告,NREL / tp - 5000 - 61740)。国家可再生能源实验室,2015。

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

[3]国王,J.,A.Clifton和B. M. Hodge。验证风力工具包的电源输出(技术报告,NRER / TP-500-61714)。Golden,Co:全国可再生能源实验室,2014年。

[4] Lieberman-cribbin,W.,C. Draxl和A.Clifton。使用WIND工具包验证代码指南(技术报告,NRER / TP-5000-62595)。Golden,Co:全国可再生能源实验室,2014年。

也可以看看

|||

相关例子

更多关于