此示例显示如何访问云中的大数据并使用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_ID
和YOUR_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年。