この例では,クラウド上の大規模データセットにアクセスし,ビッグデータ向けのMATLABの機能を使用してクラウドクラスター上で処理する方法を説明します。
以下の方法について説明します。
亚马逊云で公开されている大规模データセットアクセスする。
このデータセットの兴味深いサブセットを见つけて选択する。
データストア,高配列および并行计算工具箱を使用して,このサブセットを20分以内に処理する。
この例の公開データセットは,风集成国家数据集工具包(风工具包)[1],[2],[3],[4]の一部です。詳細については,风集成国家数据集工具包を参照してください。
この例を実行するには,Amazon AWSのクラスターへのアクセスを設定しなければなりません。马铃薯草では、MATLAB デスクトップから直接 Amazon AWS 上にクラスターを作成できます。[ホーム]タブの[并列]メニューで[クラスターの作物成と原理]を選択します。クラスタープロファイルマネージャーで,[クラウドクラスターの作物]をクリックします。あるいはMathWorks云中心を使用してAmazon AWSの計算クラスターを作成してアクセスできます。詳細については,云中心入门を参照してください。
この例で使用するデータセットは技术经济风工具包です。これには,米国本土における2007年から2013年までの,風力発電の推定値と予測値,および大気に関する変数のデータが2 TB(テラバイト)含まれています。
技术经济风工具包は亚马逊网络服务S3:// pywtk-dataの場所から利用できます。2次のつのデータセットがあります。
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”);
クラスタークラスター内のワーカーににリモートへのアクセス権を付与するに,クラスターはは环境变量
プロパティプロパティにこれらの环境変を追プロパティを编集にににににににににににににに[并列]、[クラスターの作物成と原理]のクラスタープロファイルマネージャーを使用します。
2 TBのデータセットは非常に大規模です。この例では,解析対象とするデータセットのサブセットを見つける方法を説明します。この例では,マサチューセッツ州のデータに着目します。
まず,マサチューマサチューセッツ州内の测定ステーションを识别するする取得しししし取得し取得取得测定をををしし情情情をの情情情情情情情情取得情取得three_tier_site_metadata.csv
というというファイルに含ま含まれていいいいはさくは,メモリメモリ纳まる纳まる,matlabクライアントから可阅读
でアクセスできます。関数可阅读
を使用することで,特別なコードを記述せずにS3バケットの公開データに直接アクセスできます。
tMetadata = readtable (“s3: / / pywtk-data / three_tier_site_metadata.csv”,...“readvariablenames”,真的,“TextType”,“字符串”);
このこのデータセットににリストされている州ををためににためため独特的
を使使し。
州=独特(tMetadata.state)
=50×1的字符串数组阿拉巴马,亚利桑那,阿肯色,加利福尼亚,科罗拉多,康涅狄格,特拉华,哥伦比亚区,佛罗里达,乔治亚,爱达荷,伊利诺斯,印第安纳,爱荷华,堪萨斯,肯塔基,路易斯安那,缅因州,马里兰,马萨诸塞,密歇根,明尼苏达,密西西比,密苏里,蒙大拿,内布拉斯加州,内华达,新罕布什尔,新泽西,新墨西哥"纽约" "北卡罗莱纳" "北达科他" "俄亥俄" "俄克拉何马" "俄勒冈" "宾夕法尼亚" "罗德岛" "南卡罗莱纳" "南达科他" "田纳西" "德克萨斯" "犹他" "佛蒙特" "弗吉尼亚" "华盛顿" "西弗吉尼亚" "威斯康辛" "怀俄明"
マサチューセッツ州内にあるステーションを特定します。
index = tmetadata.state ==“马萨诸塞州”;siteid = tmetadata {index,“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は多くのブロックを並列処理できます。並列化により,複数のローカルワーカーをもつ1台のデスクトップで解析を実行したり,より多くのリソースをもつクラスターにスケールアップしたりできます。データと同じクラウドサービス内のクラスターを使用すると,データがクラウド内に留まるため,データ転送時間の向上するメリットが得られます。また,データをクラウド内に保持すると,コストの面でも有利です。この例はAmazon AWSのc4.8xlargeマシン上の18個のワーカーを使用して,20分未満で実行されました。
,Matlab,Matlabはクラスターののワーカーししこのこのデータししに并列プールををし。并列使はスクリプトの补助关键词にアクセスする必要ある,プールにスクリプトをがため,プールにスクリプトを付。
p = parpool(“myAWSCluster”);
使用“myAWSCluster”配置文件启动并行池(parpool)…连接了18个工人。
addAttachedFiles (p, mfilename (“完整路径”));
网络常见数据形式(NETCDF)(NETCDF)ファイルの形式にている,カスタム読み取り有关部,カスタム解釈形式形式なりため解釈の形式にてため解釈の形式になりため解釈の形式になっため,カスタム読み取り关联资料。このこの例,この关圈名称前ncreader.
であり,netcdfデータデータ时间表ににます。
dsmettology = 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-JAN-2007 5:10:00 5.9447 187.85 3.396 1.2376 269.71 97960 01-JAN-2007 00:15:00 6.0362 187.05 3.5574 1.2376 26.05 3.5574 01-JAN-2007 00:20:00 6.1156 6.1156 186.13966/12361211-101-JAN-2007.1356 6.1156 6.1156 6.1156 186/3036297958 01-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::: ::::::::::::::::::::::::::::::::::::
团体
をを使して月平衡温度温度取得し,得られた高大的桌子。パフォーマンスの観点から,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関数が高配列をサポートしているため,慣れ親しんだ構文を使用して大規模データセットに様々な演算を実行できます。サポートされている関数の詳細については,サポート関数を参照してください。
Techno-Technol Turnt Toolkitのデータは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,[“4”,“6”],[“四”,“6”]);别的strvarnames = varnames;结尾提取每个变量的长度fileLength = fileInfo.Dimensions.Length;提取初始时间戳,采样周期,并创建时间轴tAttributes = struct2table (fileInfo.Attributes);开始时间= datetime (cell2mat (tAttributes.Value(包含(tAttributes.Name,“开始时间”))),“ConvertFrom”,“epochtime”);sampleperiod =秒(cell2mat(tattributes.value(包含(tattributes.name,“sample_period”)))));%创建输出时间表numvars = numel(strvarnames);tablesize = [fileLength Numvars];t =时间表('尺寸',拨打,“VariableTypes”,vartypes,“VariableNames”,strvarnames,'timestep'samplePeriod,“开始时间”、开始时间);用变量数据填写时间表为了k = 1:numvars t(:,k)=表(ncread(filename,varnames {k}));结尾结尾
[1] Draxl,C.,B. M. Hodge,A.Clifton和J. MCCAA。风体集成国家数据集工具包的概述和气象验证(技术报告,NRER / TP-5000-61740).Golden,CO:全国可再生能源实验室,2015。
B. M.霍奇,A.克利夫顿和J.麦卡。“风能整合国家数据集(Wind)工具包”。应用能量.vol。151,2015,pp。355-366。
[3] King, J., A. Clifton和B. M. Hodge。验证风力工具包的电源输出(技术报告,NRER / TP-5D00-61714).Golden,CO:全国可再生能源实验室,2014年。
李伯曼-克里宾,W., C.德拉克斯和A.克利夫顿。使用Wind Toolkit验证代码的指南(技术报告,NREL / tp - 5000 - 62595)。国家可再生能源实验室,2014。