Main Content

異なるマシンまたはクラスターで処理するためのデータストアの設定

データストアの 'AlternateFileSystemRoots' プロパティを設定することで、別のプラットフォーム上に読み込まれ、シームレスに動作するデータストアを作成および保存できます。このプロパティは次の場合に使用します。

  • データストアをローカル マシン上で作成し、そのデータに対し別のマシン上 (異なるオペレーティング システムが実行されている可能性あり) でアクセスし処理を行う必要がある。

  • 異なるプラットフォーム、クラウド、またはクラスター マシンを伴う並列および分散計算を使用してデータストアを処理する。

この例では、TabularTextDatastore'AlternateFileSystemRoots' プロパティを使用する方法を示します。ただし、SpreadsheetDatastoreImageDatastoreParquetDatastoreFileDatastoreKeyValueDatastore、および 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
データストアを Linux プラットフォームに読み込み、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'}
これで、Linux マシン上でこのデータストアを処理および解析できます。

並列および分散計算を使用したデータストアの処理

異なるプラットフォーム、クラウド、またはクラスター マシンを伴う並列および分散計算を使用してデータストアを処理するには、'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)

参考

| | | | | |

関連するトピック