Main Content

matlab.io.datastore.BlockedFileSet

ファイル内のブロックの集合に対するブロック ファイルセット

R2020a 以降

説明

matlab.io.datastore.BlockedFileSet オブジェクトを使用して、ファイルを繰り返し移動するときにファイル内のブロックの大規模な集合を処理できます。BlockedFileSet オブジェクトを DsFileReader オブジェクトと共に使用して、データストアのファイルを管理し、読み取ります。

作成

説明

bs = matlab.io.datastore.BlockedFileSet(location) は、指定された場所に基づいてファイル内のブロックの集合に対する BlockedFileSet オブジェクトを作成します。

bs = matlab.io.datastore.BlockedFileSet(location,Name,Value) は、ファイル拡張子、サブフォルダーを指定するか、オブジェクトのプロパティを設定します。名前と値のペアは複数指定することができます。名前を引用符で囲みます。

入力引数

すべて展開する

BlockedFileSet オブジェクトに含めるファイルまたはフォルダー。文字ベクトル、文字ベクトルの cell 配列、string 配列または構造体として指定します。ファイルが現在のフォルダーに存在しない場合、location は絶対パスまたは相対パスでなければなりません。指定したフォルダーのサブフォルダー内にあるファイルは、自動で BlockedFileSet オブジェクトに含まれません。

通常、Hadoop® ワークフローで location を構造体として指定する場合、FileNameOffset、および Size フィールドが含まれていなければなりません。この要件により、matlab.io.datastore.HadoopLocationBased クラスの initializeDatastore メソッドで直接 location 引数を使用できるようになります。例については、Hadoop サポートの追加を参照してください。

location を指定するときにワイルドカード文字 (*) を使用できます。この文字を指定すると、一致するすべてのファイルまたは一致するフォルダー内のすべてのファイルがファイル セット オブジェクトに含められます。

ローカルで使用できないファイルについては、次のような Uniform Resource Locator (URL) を使用してファイルまたはフォルダーの絶対パスを指定しなければなりません。
hdfs://hostname:portnumber/path_to_file

データ型: char | cell | string | struct

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: bs = matlab.io.datastore.BlockedFileSet(location,'IncludeSubfolders',true)

ファイル拡張子。文字ベクトル、文字ベクトルの cell 配列、または string 配列として指定します。空の引用符 '' を使用して、拡張子のないファイルを表すことができます。

'FileExtensions' を指定しない場合、BlockedFileSet は自動的にすべてのファイル拡張子を含めます。

例: 'FileExtensions','.jpg'

例: 'FileExtensions',{'.txt','.csv'}

サブフォルダーを含めるかどうかのフラグ。数値あるいは logical 1 (true) または 0 (false) として指定します。各フォルダー内のすべてのファイルとサブフォルダーを含めるには true を指定し、各フォルダー内のファイルのみを含めるには false を指定します。

例: 'IncludeSubfolders',true

プロパティ

すべて展開する

ファイル情報の分割に使用するバイト単位のブロック サイズ。次のいずれかの値として指定します。

  • 'file' — 集合内の次のファイルのサイズを使用します。

  • 数値スカラー — 指定された値 (バイト単位) を使用します。

例: 'BlockSize',2000

代替ファイル システムのルート パス。string 配列または cell 配列として指定します。ローカル マシン上にデータストアを作成するが、別のマシン (異なるオペレーティング システムの可能性がある) 上でデータにアクセスして処理する必要がある場合は、'AlternateFileSystemRoots' を使用します。また、Parallel Computing Toolbox™ と MATLAB® Parallel Server™ を使用してデータを処理し、そのデータがローカル マシンに保存され、そのデータのコピーが異なるプラットフォームのクラウドやクラスター マシンにある場合、'AlternateFileSystemRoots' を使用してルート パスを関連付けなければなりません。

  • 相互に対応する 1 組のルート パスを関連付けるには、'AlternateFileSystemRoots' を string 配列として指定します。以下に例を示します。

    ["Z:\datasets","/mynetwork/datasets"]

  • データストアに対応する複数の組のルート パスを関連付けるには、複数行を含む cell 配列として 'AlternateFileSystemRoots' を指定します。各行は対応するルート パスの組を表します。cell 配列内の各行を string 配列、または文字ベクトルの cell 配列のいずれかとして指定します。以下に例を示します。

    • 'AlternateFileSystemRoots' を string 配列の cell 配列として指定します。

      {["Z:\datasets", "/mynetwork/datasets"];...
       ["Y:\datasets", "/mynetwork2/datasets","S:\datasets"]}

    • あるいは、'AlternateFileSystemRoots' を文字ベクトルの cell 配列からなる cell 配列として指定します。

      {{'Z:\datasets','/mynetwork/datasets'};...
       {'Y:\datasets', '/mynetwork2/datasets','S:\datasets'}}

'AlternateFileSystemRoots' の値は、次の条件を満たさなければなりません。

  • 1 行以上の行を含み、各行は 1 組の対応するルート パスを指定する。

  • 各行は複数のルート パスを指定し、各ルート パスは 2 文字以上を含まなければならない。

  • ルート パスは一意で、他のルート パスのサブフォルダーではない。

  • ファイルの場所を指す 1 つ以上のルート パス エントリを含む。

詳細については、異なるマシンまたはクラスターで処理するためのデータストアの設定を参照してください。

例: ["Z:\datasets","/mynetwork/datasets"]

データ型: string | cell

この プロパティ は読み取り専用です。

ブロック ファイルセット オブジェクト内のブロック数。数値スカラーとして指定します。

例: bs.NumBlocks

データ型: double

この プロパティ は読み取り専用です。

BlockedFileSet オブジェクトから読み取られたブロック数。数値スカラーとして指定します。

例: bs.NumBlocksRead

データ型: double

この プロパティ は読み取り専用です。

matlab.io.datastore.BlockedFileSet オブジェクト内のブロックに関する情報。以下のプロパティを使用する matlab.io.datastore.BlockedInfo オブジェクトとして返されます。

  • FilenameBlockedFileSet オブジェクト内のファイルの名前。名前にはファイルの絶対パスが含まれます。

  • FileSize — ファイルのサイズ (バイト数)。

  • Offset — 読み取るファイル内の開始オフセット。

  • BlockSize — ブロックのサイズ (バイト数)。

特定のブロックに関する情報を得るには、ブロックのインデックスを指定します。たとえば、bs.BlockInfo(2) では 2 つ目のブロックに関する情報が返されます。(:) を指定するかインデックスを指定せずに bs.BlockInfo を呼び出すと、すべてのブロックに関する情報が返されます。

例: bs.BlockInfo(2)

オブジェクト関数

hasPreviousBlockブロック ファイルセットに以前のブロックがあるかどうかを確認する
previousblock ブロック ファイルセット内の以前のブロックに関する情報
hasNextBlockブロック ファイルセットに別のブロックがあるかどうかを確認します。
nextblock ブロック ファイルセット内の次のブロックに関する情報
progress 読み取られたブロックまたはファイルの数を確認する
maxpartitions 最大区画数
partition ファイルセット オブジェクトの分割
subsetデータストアまたは FileSet のサブセットの作成
reset ファイルセット オブジェクトのリセット

すべて折りたたむ

ブロック ファイルセットを作成して、ブロック ファイルセット内の特定のブロックに関する情報をクエリします。

ファイルの集合のブロック ファイルセット bs を作成し、ブロックのサイズを指定します。

folder = {'accidents.mat','airlineResults.mat','census.mat','earth.mat'}
folder = 1x4 cell
    {'accidents.mat'}    {'airlineResults.mat'}    {'census.mat'}    {'earth.mat'}

bs = matlab.io.datastore.BlockedFileSet(folder,'BlockSize',2000)
bs = 
  BlockedFileSet with properties:

                   NumBlocks: 98
               NumBlocksRead: 0
                   BlockSize: 2000
                   BlockInfo: BlockInfo for all 98 blocks
    AlternateFileSystemRoots: {}

関数 nextblock を使用するか、BlockInfo プロパティをクエリしてインデックスを指定することによって、特定のブロックの情報を取得します。nextblock を使用して連続するブロックに関する情報を取得します。たとえば、セット内の最初の 2 つのブロックに関する情報を取得します。

blk1 = nextblock(bs)
blk1 = 
  1x1 BlockInfo
                                                    Filename                                                    FileSize    Offset    BlockSize
    ________________________________________________________________________________________________________    ________    ______    _________

    "/mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/toolbox/matlab/demos/accidents.mat"      7343        0         2000   


blk2 = nextblock(bs)
blk2 = 
  1x1 BlockInfo
                                                    Filename                                                    FileSize    Offset    BlockSize
    ________________________________________________________________________________________________________    ________    ______    _________

    "/mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/toolbox/matlab/demos/accidents.mat"      7343       2000       2000   


BlockInfo プロパティをクエリして、セット内の最後のブロックに関する情報を取得します。

lastblk = bs.BlockInfo(98)
lastblk = 
  1x1 BlockInfo
                                                  Filename                                                  FileSize    Offset    BlockSize
    ____________________________________________________________________________________________________    ________    ______    _________

    "/mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/toolbox/matlab/demos/earth.mat"     32522      32000        522   


バージョン履歴

R2020a で導入