主要内容

通过云处理大数据

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

学习如何:

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

  • 找到并选择此数据集中感兴趣的子集。

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

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

要求

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

设置远程数据访问

在此示例中使用的数据集是技术经济风格工具包。它包含2 TB(TberByte)用于风电估算和预测,以及大陆美国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”“美国 - 西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://pywtk-data/met_data/folder/site_id.nc.,在那里文件夹最近的整数是小于等于吗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来处理这些数据。在集群中创建并行池。在下面的代码中,使用集群配置文件的名称。将脚本附加到池中,因为并行工作程序需要访问其中的助手函数。

p = parpool (“myawscluster”);
使用'myAWSCluster'配置文件启动并行池(parpool)…与18名工人联系。
addAttachedFiles (p, mfilename (“fullpath”));

用马萨诸塞州的气象站的计量数据创建一个数据存储。数据是网络公共数据表单(NetCDF)文件的形式,您必须使用自定义的读取函数来解释它们。在这个例子中,这个函数被命名为ncreader.并将NetCDF数据读入时间表。您可以在此脚本末尾探索其内容。

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

使用数据存储中的度量数据创建一个长时间表。

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([260 300]);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 = replace(varNames,[varNames])“4”“6”]、[“四”“6”]);其他的strVarNames = varNames;结束%提取每个变量的长度fileLength = fileInfo.Dimensions.Length;提取初始时间戳、采样周期并创建时间轴tAttributes = struct2table (fileInfo.Attributes);开始时间= datetime (cell2mat (tAttributes.Value(包含(tAttributes.Name,“开始时间”))),“ConvertFrom”“epochtime”);sampleperiod =秒(cell2mat(taltritributes.value(包含(tattributes.name,“sample_period”))))));%创建输出时间表numVars =元素个数(strVarNames);tableSize = [fileLength numVars];t =时间表(“大小”tableSize,'variabletypes'varTypes,“VariableNames”strVarNames,'timestep'samplePeriod,“开始时间”、开始时间);%用变量数据填写时间表t(:,k) = table(ncread(filename,varNames{k}));结束结束

参考

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

[2] Draxl, C., B. M. Hodge, A. Clifton, J. McCaa。“风能集成国家数据集(Wind)工具包。”应用能源.卷。151,2015,pp。355-366。

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

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

另请参阅

|||

相关的例子

更多关于