異なるマシンまたはクラスターで処理するためのデータストアの設定
データストアの '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.Filesans =
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