異なるマシンまたはクラスターで処理するためのデータストアの設定
データストアの 'AlternateFileSystemRoots'
プロパティを設定することで、別のプラットフォーム上に読み込まれ、シームレスに動作するデータストアを作成および保存できます。このプロパティは次の場合に使用します。
データストアをローカル マシン上で作成し、そのデータに対し別のマシン上 (異なるオペレーティング システムが実行されている可能性あり) でアクセスし処理を行う必要がある。
異なるプラットフォーム、クラウド、またはクラスター マシンを伴う並列および分散計算を使用してデータストアを処理する。
この例では、TabularTextDatastore
の 'AlternateFileSystemRoots'
プロパティを使用する方法を示します。ただし、SpreadsheetDatastore
、ImageDatastore
、ParquetDatastore
、FileDatastore
、KeyValueDatastore
、および TallDatastore
のいずれのデータストアでも同じ構文を使用できます。カスタム データストアの 'AlternateFileSystemRoots'
機能を使用するには、matlab.io.datastore.DsFileSet
およびカスタム データストアの開発を参照してください。
データストアの保存および異なるファイル システム プラットフォームへの読み込み
別のマシン (オペレーティング システムが異なる可能性あり) に読み込まれ、シームレスに動作するデータストアを 1 つのファイル システム上に作成します。たとえば、Windows® マシン上でデータストアを作成し、それを保存して、次に Linux® マシン上に読み込みます。
データストアを作成および保存する前に、まず別のプラットフォーム上でのデータのルート パスを特定します。ルート パスはマシンまたはファイル システムによって異なります。たとえば、ローカル マシン上にデータがあり、クラスター上にそのデータのコピーがある場合、データにアクセスするためのルート パスを取得します。
ローカル Windows マシンの場合、
"Z:\DataSet"
。Linux クラスターの場合、
"/nfs-bldg001/DataSet"
。
次に、データストアの 'AlternateFileSystemRoots'
パラメーターを使用してこれらのルート パスを関連付けます。
altRoots = ["Z:\DataSet","/nfs-bldg001/DataSet"]; ds = tabularTextDatastore('Z:\DataSet','AlternateFileSystemRoots',altRoots);
データストアの Files
プロパティを確認します。この場合、Files
プロパティには Windows マシンによってアクセスされた際のデータの位置が含まれます。
ds.Files
ans = 5×1 cell array {'Z:\DataSet\datafile01.csv'} {'Z:\DataSet\datafile02.csv'} {'Z:\DataSet\datafile03.csv'} {'Z:\DataSet\datafile04.csv'} {'Z:\DataSet\datafile05.csv'}
save ds_saved_on_Windows.mat ds
Files
プロパティを確認します。ルート パス 'Z:\DataSet'
は Linux クラスター上でアクセスできないため、読み込みに際して、データストア関数は 'AlternateFileSystemRoots'
パラメーターで指定された値に基づいてルート パスを自動的に更新します。これにより、データストアの Files
プロパティには Linux クラスター上のデータの更新されたルート パスが含まれるようになります。load ds_saved_on_Windows.mat
ds.Files
ans = 5×1 cell array {'/nfs-bldg001/DataSet/datafile01.csv'} {'/nfs-bldg001/DataSet/datafile02.csv'} {'/nfs-bldg001/DataSet/datafile03.csv'} {'/nfs-bldg001/DataSet/datafile04.csv'} {'/nfs-bldg001/DataSet/datafile05.csv'}
並列および分散計算を使用したデータストアの処理
異なるプラットフォーム、クラウド、またはクラスター マシンを伴う並列および分散計算を使用してデータストアを処理するには、'AlternateFileSystemRoots'
パラメーターを事前定義しなければなりません。この例では、ローカル マシン上にデータストアを作成し、データのごく一部を解析し、そのうえで Parallel Computing Toolbox™ および MATLAB® Parallel Server™ を使用して解析をデータセット全体にスケール アップする方法を示します。
データストアを作成し、値を 'AlternateFileSystemRoots'
プロパティに代入します。'AlternateFileSystemRoots'
プロパティの値を設定するには、異なるプラットフォーム上でのデータのルート パスを特定します。ルート パスはマシンまたはファイル システムによって異なります。たとえば、使用しているマシンおよびクラスターからデータ アクセスするためのルート パスを特定します。
ローカル Windows マシンからの場合、
"Z:\DataSet"
。MATLAB Parallel Server Linux クラスターからの場合、
"/nfs-bldg001/DataSet"
。
次に、AlternateFileSystemRoots
プロパティを使用してこれらのルート パスを関連付けます。
altRoots = ["Z:\DataSet","/nfs-bldg001/DataSet"]; ds = tabularTextDatastore('Z:\DataSet','AlternateFileSystemRoots',altRoots);
ローカル マシン上でデータのごく一部を解析します。たとえば、分割されたデータのサブセットを取得し、すべての欠損エントリを削除してデータを整理し、変数のプロットを確認します。
tt = tall(partition(ds,100,1));
summary(tt);
% analyze your data
tt = rmmissing(tt);
plot(tt.MyVar1,tt.MyVar2)
MATLAB Parallel Server クラスター (Linux クラスター) を使用することで、解析をデータセット全体にスケール アップします。たとえば、クラスター プロファイルを使用してワーカー プールを起動し、次に並列および分散計算機能を使用してデータセット全体の解析を実行します。
parpool('MyMjsProfile') tt = tall(ds); summary(tt); % analyze your data tt = rmmissing(tt); plot(tt.MyVar1,tt.MyVar2)
参考
datastore
| TabularTextDatastore
| SpreadsheetDatastore
| ImageDatastore
| FileDatastore
| KeyValueDatastore
| TallDatastore