主要内容

流程在云计算大数据

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

学习如何:

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

  • 查找并选择该数据集的有趣的子集。

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

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

需求

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

设置访问远程数据

本例中使用的数据集是Techno-Economic WIND工具包。它包含了2tb (TB)的数据,用于美国大陆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”“us-west-2”);

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

寻找大数据子集

在2 TB的数据集是相当大的。这个例子说明了如何找到要分析的数据集的一个子集。这个例子专注于为马萨诸塞州的数据。

首先获取标识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.state ==“马萨诸塞州”;网站ID = tMetadata {索引,“site_id”};

给定站的数据包含在此命名约定的文件中:s3: / / / site_id.nc pywtk-data / met_data /文件夹, 在哪里文件夹是距离小于或等于的最接近的整数site_id / 500..使用这个约定,为每个站点创建一个文件位置。

文件夹=楼层(Siteid / 500);fileLocations = compose(“S3://pywtk-data/met_data/%d/%d.nc”,文件夹,siteid);

处理大数据

您可以使用数据存储和高数组来访问和处理内存中不合适的数据。在执行大数据计算时,MATLAB根据需要访问更小的远程数据部分,因此不需要一次下载整个数据集。使用高数组,MATLAB自动将数据分解成更小的块,以适应内存的处理。

如果您有并行计算工具箱,MATLAB可以并行处理多块。并行化使您能够运行与当地工人到一个桌面上的分析,或扩展到群集更多的资源。当你在同一个云服务的数据,在云中的数据停留在群集并从提高数据传输时间中受益。在云中保存数据也更划算。此示例RAN中使用18名工人在亚马逊AWS一个c4.8xlarge机器上不到20分钟。

如果您在集群中使用并行池,MATLAB集群中使用工人处理这些数据。创建群集的并行池。在下面的代码,使用群集配置文件的名称来代替。安装脚本到池,因为并行的工人需要它来访问一个辅助功能。

p = parpool(“myAWSCluster”);
使用“myawscluster”配置文件启动并行池(Parpool)...连接到18名工人。
addattachedfiles(p,mfilename(“完整路径”));

创建于马萨诸塞州站计量数据的数据存储。这些数据是在网络通用数据格式(的NetCDF)文件的形式,你必须使用自定义读功能来解释它们。在这个例子中,这个功能被命名为ncReader并将NetCDF数据读入时间表。您可以在本脚本的末尾研究它的内容。

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

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

ttmetrology = tall(dsmettology)
ttMetrology = M×6高大时间表时间WIND_SPEED  - 风向功率密度温度压力____________________ __________ ______________ ______ _______ ___________ ________ 01-JAN-2007 00:00:00 5.905 189.35 3.3254 1.2374 269.74 97963 01-JAN-2007 00:05:00 5.8898 188.77 3.29881.2376 269.73 97959 01一月2007 00:10:00 5.9447 187.85 3.396 1.2376 269.71 97960 01一月2007 00:15:00 6.0362 187.05 3.5574 1.2376 269.68 97961 01一月2007 00:20:00 6.1156 186.49 3.6973 1.2375 269.8397958 01一月2007 0点25分00秒6.2133 185.71 3.8698 1.2376 270.03 97952 01一月2007 00:30:00 6.3232 184.29 4.0812 1.2379 270.19 97955 01-JAN-2007零时35分00秒6.4331 182.51 4.3382 1.2382 270.3 97957::::::::::::::

使用Get每月的平均温度groupsummary和排序产生的高个子表。出于性能,MATLAB推迟最高大的操作,直到所需的数据。在这种情况下,绘图延迟计算的数据触发评估。

MeanTemperature = Commansumary(TTMetrology,“时间”“月”“意思”“温度”);MeanTemperature = Sortrows(manimtemperature);

绘制结果。

数字;绘图(ManiCherature.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”);Xlabel(“年”);ylabel(“温度(K)”

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

定义自定义读取功能

Techno-Economic WIND Toolkit中的数据以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,“start_time”))),“转兑”“epochtime”);samplePeriod =秒(cell2mat (tAttributes.Value(包含(tAttributes.Name,“sample_period”))));%创建输出时间表numVars = numel(strVarNames);tableSize = [文件长度numVars];T =时间表('尺寸',拨打,“VariableTypes”,varTypes,'variablenames',strvarnames,“步伐”,sampleperiod,'开始时间',开始时间);%填写可变数据的时间表为了k = 1:numvars t(:,k)= table(ncread(filename,varnames {k});结尾结尾

参考文献

[1] Draxl,C.,B. M.霍奇,A.克利夫顿,和J. McCaa。风集成国家数据集工具包概述和气象验证(技术报告,NREL / TP-5000-61740)。黄金,CO:国家可再生能源实验室,2015年。

[2] Draxl,C.,B. M.霍奇,A.克利夫顿,和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。

也可以看看

|||

相关例子

更多关于