主要内容

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

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

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

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

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

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

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

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

要件

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

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

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

技术经济风工具包は 亚马逊网络服务s3://pywtk数据の場所から利用できます。次の 2.つのデータセットがあります。

  • s3://pywtk数据/met_数据- 計量データ

  • s3://pywtk数据/fcst_数据——予測データ

亚马逊S3のリモート データを処理するには、自动气象站認証情報の環境変数を定義しなければなりません。リモート データへのアクセスを設定する方法の詳細については、リモート データの操作を参照してください。次のコードの您的\u AWS\u访问\u密钥\u IDおよび您的\u AWS\u密码\u访问\u密钥をお使いの 亚马逊AWS認証情報に置き換えてください。

塞滕夫(“AWS\u访问\u密钥\u ID”,“您的\u AWS\u访问\u密钥\u ID”);塞滕夫(“AWS\u密码\u访问\u密钥”,“您的\u AWS\u密码\u访问\u密钥”);

このデータセットでは地理的地域を指定する必要があるため、対応する環境変数を設定しなければなりません。

塞滕夫(“AWS_默认_区域”,“美国西部2号”);

クラスター内のワーカーにリモート データへのアクセス権を付与するには、クラスター プロファイルの环境变量プロパティにこれらの環境変数名を追加します。クラスター プロファイルのプロパティを編集するには、[並列][クラスターの作成と管理]のクラスター プロファイル マネージャーを使用します。

ビッグ データのサブセットを見つける

2 TBのデータセットは非常に大規模です。この例では,解析対象とするデータセットのサブセットを見つける方法を説明します。この例では,マサチューセッツ州のデータに着目します。

まず、マサチューセッツ州内の測定ステーションを識別する 身份证件を取得し、その測定情報を含むファイルを特定します。各ステーションのメタデータ情報は三层站点元数据.csvというファイルに含まれています。このデータは小さく、メモリに納まるため、MATLABクライアントから可读でアクセスできます。関数可读を使用することで、特別なコードを記述せずに S3バケットの公開データに直接アクセスできます。

tMetadata=可读取(“s3://pywtk data/three_tier_site_metadata.csv”,...“ReadVariableNames”符合事实的“文本类型”,“字符串”);

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

状态=唯一(tMetadata.state)
州=50×1的字符串数组“阿拉巴马州”“亚利桑那州”“阿肯色州”“加利福尼亚州”“科罗拉多州”“康涅狄格州”“特拉华州”“哥伦比亚特区”“佛罗里达州”“乔治亚州”“爱达荷州”“伊利诺伊州”“印第安纳州”“爱荷华州”“堪萨斯州”“肯塔基州”“路易斯安那州”“缅因州”“马里兰州”“马萨诸塞州”“密歇根州”“明尼苏达州”“密西西比州”“密苏里州”“蒙大拿州”“内布拉斯加州”“内华达州”“新罕布什尔州”“新泽西州”“新墨西哥州”“纽约”“北卡罗来纳”“北达科他”“俄亥俄”“俄克拉荷马”“俄勒冈州”“宾夕法尼亚”“罗德岛”“南卡罗来纳”“南达科他州”“田纳西”“德克萨斯”“犹他”“佛蒙特”“弗吉尼亚”“华盛顿”“西弗吉尼亚”“威斯康星州”“怀俄明州”

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

index=tMetadata.state==“马萨诸塞州”;siteId=tMetadata{index,“站点id”};

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

folder=floor(siteId/500);fileLocations=compose(“s3://pywtk data/met_data/%d/%d.nc”,文件夹,站点ID);

ビッグ データの処理

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

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

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

p=parpool(“myAWSCluster”);
正在使用“myAWSCluster”配置文件启动并行池(parpool)…连接到18个工人。
addAttachedFiles(p,mfilename(“完整路径”));

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

DSMetology=文件数据存储(文件位置,“ReadFcn”,@ncReader,“UniformRead”,对);

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

ttMetrology=高(dsMetrology)
计量学学=M×6 6高度表时间表时间时间风、时间、时间、时间、时间、时间、时间、时间、时间、时间、时间、时间、时间、时间、时间、时间、时间、时间、时间、时间、时间、时间、时间、时间、时间、时间、时间、时间、时间、风、风、风速、风、风速、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风、风2007年1月1日00:00 5.905189.35 3.3254 1.2374269.7497963 01-Jan-2007 00:05:00 5.8898188.773.29881.2376269.7397959 01-Jan-2007 00:10:00 5.9447187.853.396 1。2376 269.71 97960 01-Jan-2007 00:15:00 6.0362 187.05 3.5574 1.2376 269.68 97961 01-Jan-2007 00:20:00 6.1156 186.49 3.6973 1.2375 269.83 97958 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:00:38.2384.384:82:971: : :

组摘要を使用して月次平均温度を取得し、得られた 高桌を並べ替えます。パフォーマンスの観点から、MATLABはデータが必要になるまでほとんどの 高的演算を先送りにします。この例では、データをプロットすることで先送りされた計算の評価がトリガーされます。

平均温度=组汇总(t计量,“时间”,“月”,“平均值”,“温度”);平均温度=sortrows(平均温度);

結果をプロットします。

图;曲线图(平均温度、平均温度、,"*-");ylim([260 300]);xlim([112*7+1]);xticks(1:12:12*7+1);xticklabels(["2007",“2008”,"2009","2010","2011","2012","2013","2014"]);头衔(“2007-2013年马萨诸塞州平均气温”);xlabel(“年”);伊莱贝尔(“温度(K)”)

多くの MATLAB関数が 高的配列をサポートしているため、慣れ親しんだ構文を使用して大規模データセットに様々な演算を実行できます。サポートされている関数の詳細については、サポート関数を参照してください。

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

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

作用t=ncReader(文件名)%NCREADER读取NetCDF文件(.nc),提取数据集并另存为时间表%获取有关NetCDF数据源的信息fileInfo=ncinfo(文件名);%提取变量名和数据类型varNames=string({fileInfo.Variables.Name});varTypes=string({fileInfo.Variables.Datatype});%将变量名转换为表变量的有效名称如果任何(开始)使用(变量名称["4","6"]))strVarNames=replace(varNames["4","6"],[“四个”,“六个”]);其他的strVarNames=varNames;终止%提取每个变量的长度fileLength=fileInfo.Dimensions.Length;%提取初始时间戳、采样周期并创建时间轴tAttributes=struct2table(fileInfo.Attributes);startTime=datetime(cell2mat)(tAttributes.Value)(contains)(tAttributes.Name,“开始时间”))),“转换自”,“时代”);samplePeriod=秒(cell2mat(tAttributes.Value)包含(tAttributes.Name,“采样周期”))));%创建输出时间表numVars=numel(strVarNames);tableSize=[fileLength numVars];t=timeline(“尺寸”,表大小,“VariableTypes”,变形金刚,“变化无常”,strVarNames,“时间步”,样本期,“开始时间”,开始时间);%用可变数据填写时间表对于k=1:numVars t(:,k)=表(ncread(filename,varNames{k}));终止终止

参考文献

[1] Draxl,C.,B.M.Hodge,A.Clifton和J.McCaa。Wind Integration国家数据集工具包概述和气象验证(技术报告,NREL/TP-5000-61740)。科罗拉多州戈尔登:国家可再生能源实验室,2015年。

[2] Draxl,C.,B.M.Hodge,A.Clifton和J.McCaa.“风能整合国家数据集(Wind)工具包”应用能量2015年第151卷,第355-366页。

金,克利夫顿和霍奇。验证WIND Toolkit的功率输出(技术报告,NREL/TP-5D00-61714)。科罗拉多州戈尔登:国家可再生能源实验室,2014年。

[4] 利伯曼·克里宾、C·德拉克勒和A·克利夫顿。WIND工具包验证代码使用指南(技术报告,NREL/TP-5000-62595)。科罗拉多州戈尔登:国家可再生能源实验室,2014年。

参考

|||

関連する例

詳細