主要内容

クラウドでのビッグデ,タの処理

この例では,クラウド上の大規模データセットにアクセスし,ビッグデータ向けのMATLABの機能を使用してクラウドクラスター上で処理する方法を説明します。

以下の方法にいて説明します。

  • 亚马逊云で公開されている大規模デ,タセットにアクセスする。

  • このデタセットの興味深いサブセットを見けて選択する。

  • データストア,高配列および并行计算工具箱を使用して,このサブセットを20分以内に処理する。

この例の公開データセットは,风集成国家数据集工具包(风工具包)[1],[2],[3],[4]の一部です。詳細にいては,风能集成国家数据集工具包を参照してください。

要件

この例を実行するには,亚马逊AWSのクラスタ,へのアクセスを設定しなければなりません。MATLABでは、MATLAB デスクトップから直接 Amazon AWS 上にクラスターを作成できます。[ホ,ム]タブの[並列]メニュ,で[クラスタ,の作成と管理]を選択します。クラスタプロファルマネジャで,[クラウドクラスタ,の作成]をクリックします。あるいはMathWorks云中心を使用してAmazon AWSの計算クラスターを作成してアクセスできます。詳細にいては,开始使用云中心を参照してください。

リモ,トデ,タへのアクセスの設定

この例で使用するデタセットは技术经济WIND Toolkitです。これには,米国本土における2007年から2013年までの,風力発電の推定値と予測値,および大気に関する変数のデータが2 TB(テラバイト)含まれています。

Techno-Economic WIND Toolkitは,Amazon Web Servicesのs3: / / nrel-pds-wtk / wtk-techno-economic / pywtk-dataの場所から利用できます。次の2のデタセットがあります。

  • s3: / / nrel-pds-wtk wtk-techno-economic / pywtk-data / met_data—計量デタ

  • s3: / / nrel-pds-wtk wtk-techno-economic / pywtk-data / fcst_data—予測デタ

Amazon S3のリモートデータを処理するには,AWS認証情報の環境変数を定義しなければなりません。リモトデタへのアクセスを設定する方法の詳細にいては,リモ,トデ,タの操作を参照してください。次のコ,ドのYOUR_AWS_ACCESS_KEY_IDおよびYOUR_AWS_SECRET_ACCESS_KEYをお使いの亚马逊AWS認証情報に置き換えてください。一時的なawsセキュリティ資格情報を使用している場合は,環境変数AWS_SESSION_TOKENも設定します。

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: / / nrel-pds-wtk / wtk-techno-economic / pywtk-data / three_tier_site_metadata.csv”...“ReadVariableNames”,真的,“TextType”“字符串”);

このデ,タセットにリストされている州を調べるために,独特的を使用します。

state = unique(tMetadata.state)
州=50×1字符串数组"亚拉巴马""亚利桑那""阿肯色""加利福尼亚""科罗拉多""康乃狄克州""特拉华州""哥伦比亚特区""佛罗里达""乔治亚""爱达荷""伊利诺伊""印第安纳""爱荷华""堪萨斯""肯塔基""路易斯安那""缅因""马里兰""马萨诸塞""密歇根""明尼苏达""密西西比""密苏里""蒙大拿""内布拉斯加州""内华达""新罕布什尔州""新泽西""新墨西哥""纽约""北卡罗来纳州""北达科他州""俄亥俄""俄克拉荷马""俄勒冈""宾夕法尼亚""罗得岛""南卡罗来纳""南达科他""田纳西""德克萨斯""Utah" "Vermont" "Virginia" "Washington" "West Virginia" "Wisconsin" "Wyoming"

マサチュ,セッ,州内にあるステ,ションを特定します。

index = tMetadata。状态= =“麻省”;siteId = tMetadata{索引,“site_id”};

特定のステ,ションのデ,タは,s3: / / nrel-pds-wtk / wtk-techno-economic / pywtk-data / met_data /文件夹/ site_id.ncの命名規則に従うファ@ @ルに含まれています。ここで,文件夹site_id / 500以下の最も近い整数です。この命名規則を使用して,各ステ,ションのファ,ルの場所を構成します。

文件夹= floor(siteId/500);fileLocations = compose(“s3: / / nrel-pds-wtk / wtk-techno-economic pywtk-data / met_data / % d / % d.nc”、文件夹、siteId);

ビッグデ,タの処理

データストアおよび高配列を使用して,メモリに納まらないデータにアクセスし,処理できます。ビッグデータの計算を実行するときに,MATLABは必要に応じてリモートデータの小さな部分にアクセスするため,一度にデータセット全体をダウンロードする必要はありません。高配列の場合、MATLABはメモリに納めて処理できる小さなブロックにデータを自動的に分割します。

并行计算工具箱をお持ちの場合,MATLABは多くのブロックを並列処理できます。並列化により,複数のローカルワーカーをもつ1台のデスクトップで解析を実行したり,より多くのリソースをもつクラスターにスケールアップしたりできます。データと同じクラウドサービス内のクラスターを使用すると,データがクラウド内に留まるため,データ転送時間の向上するメリットが得られます。また,デ,タをクラウド内に保持すると,コストの面でも有利です。この例はAmazon AWSのc4.8xlargeマシン上の18個のワーカーを使用して,20分未満で実行されました。

クラスター内で並列プールを使用すると,MATLABはクラスター内のワーカーを使用してこのデータを処理します。クラスタ,内に並列プ,ルを作成します。次のコドでは,代わりにお使いのクラスタプロファルの名前を使用してください。並列ワ,カ,はスクリプト内の補助関数にアクセスする必要があるため,プ,ルにスクリプトを付加します。

P = parpool(“myAWSCluster”);
启动并行池(parpool)使用'myAWSCluster'配置文件…与18个工人相连。
addAttachedFiles (p, mfilename (“fullpath”));

マサチュセッ州内のステションの計量デタをもデタストアを作成します。データは网络常见的数据形式(NetCDF)ファイルの形式になっているため,カスタム読み取り関数を使用して解釈しなければなりません。この例で,この関数の名前はncReaderであり,NetCDFデ,タを时间表に読み込みます。このスクリプトの最後でその内容を確認できます。

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

デタストアの計量デタをもtall时间表を作成します。

ttMetrology =高(dsMetrology)
ttMetrology = M×6 tall schedule时间风速风向功率密度温度压力____________________ __________ ____________________ __________________ ________ 01- 01- 2007 00:00:00 5.905 189.35 3.3254 1.2374 269.74 97963 01- 01- 2007 00:05:00 5.9447 187.85 3.396 1.2376 269.71 97960 01- 01- 2007 00:15:00 6.0362 187.05 3.5574 1.2376 269.68 97961 01- 01- 2007 00:20:00 6.1156 186.49 3.6973 1.2375 269.83 9795801-Jan-2007 00:25:00 6.2133 185.71 3.8698 1.2376 270.03 97952 01-Jan-2007 00:30:00 6.3232 184.29 4.0812 1.2379 270.19 97955 01-Jan-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関数が高配列をサポートしているため,慣れ親しんだ構文を使用して大規模データセットに様々な演算を実行できます。サポトされている関数の詳細にいては,サポ,ト関数を参照してください。

カスタム読み取り関数の定義

技术经济风工具包のデータはNetCDFファイルに保存されています。このデ,タを时间表に読み込むカスタム読み取り関数を定義します。NetCDFファルの読み取りの詳細にいては,NetCDFファescルを参照してください。

函数t = ncReader(文件名)% NCREADER读取NetCDF文件(.nc),提取数据集并保存为时间表获取有关NetCDF数据源的信息fileInfo = ncinfo(文件名);提取变量名和数据类型varNames =字符串({fileInfo.Variables.Name});varTypes = string({fileInfo.Variables.Datatype});将变量名转换为表变量的有效名称如果任何(startsWith (varNames, (“4”“6”) strVarNames = replace(varNames,[“4”“6”]、[“四”“6”]);其他的strVarNames = varNames;结束提取每个变量的长度fileLength = fileInfo.Dimensions.Length;提取初始时间戳、采样周期并创建时间轴tAttributes = struct2table(fileInfo.Attributes);startTime = datetime(cell2mat(tAttributes.Value(contains(tAttributes.Name,“start_time”))),“ConvertFrom”“epochtime”);samplePeriod = seconds(cell2mat(tAttributes.Value(contains(tAttributes.Name,“sample_period”))));创建输出时间表numVars = nummel (strVarNames);tableSize = [fileLength numVars];时间表(“大小”tableSize,“VariableTypes”varTypes,“VariableNames”strVarNames,“步伐”samplePeriod,“开始时间”、开始时间);用可变数据填写时间表k = 1:numVars t(:,k) = table(ncread(文件名,varNames{k}));结束结束

参考文献

德拉克斯,C., B. M.霍奇,A.克利夫顿,J.麦卡。风力集成国家数据集工具包的概述和气象验证技术报告,NREL/TP-5000-61740)。戈尔登,CO:国家可再生能源实验室,2015。

德拉克斯,C., B. M.霍奇,A.克利夫顿,J.麦卡。“风能集成国家数据集(Wind)工具包。”应用能源.Vol。2015年第1期,页355-366。

金,J. A.克利夫顿和B. M.霍奇。对WIND工具箱的功率输出进行验证技术报告,NREL/TP-5D00-61714)。戈尔登,CO:国家可再生能源实验室,2014。

[4] W.利伯曼-克里宾,C.德拉克斯和A.克利夫顿。使用windtoolkit验证代码指南(技术报告,NREL/TP-5000-62595)。戈尔登,CO:国家可再生能源实验室,2014。

参考

|||

関連する例

詳細