exponenta event banner

matlab.io.datastore. BlockedFileSet

Заблокированный набор файлов для сбора блоков в файле

Описание

matlab.io.datastore.BlockedFileSet объект помогает обрабатывать большую коллекцию блоков в файлах при итерационном перемещении по файлам. Используйте BlockedFileSet объект вместе с DsFileReader для управления файлами из хранилища данных и их чтения.

Создание

Описание

bs = matlab.io.datastore.BlockedFileSet(location) создает BlockedFileSet для коллекции блоков в файлах на основе указанного расположения.

пример

bs = matlab.io.datastore.BlockedFileSet(location,Name,Value) задает расширение файла, подпапки или задает свойства объекта. Можно указать несколько пар имя-значение. Заключите имена в кавычки.

Входные аргументы

развернуть все

Файлы или папки для включения в BlockedFileSet объект, заданный как символьный вектор, массив ячеек символьных векторов, строковый массив или структура. Если файлы находятся не в текущей папке, то location должен быть полным или относительным путем. Файлы в подпапках указанной папки не включаются автоматически в BlockedFileSet объект.

Обычно для рабочего процесса Hadoop ® при указанииlocation как структура, она должна содержать поля FileName, Offset, и Size. Это требование позволяет использовать location аргумент непосредственно с initializeDatastore способ matlab.io.datastore.HadoopLocationBased класс. Пример см. в разделе Добавление поддержки Hadoop.

При указании можно использовать подстановочный символ (*) location. Указание этого символа включает все соответствующие файлы или все файлы в соответствующих папках объекта набора файлов.

Если файлы недоступны локально, то полный путь к файлам или папкам должен быть унифицированным URL-адресом ресурса, например
hdfs://hostname:portnumber/path_to_file.

Типы данных: char | cell | string | struct

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: bs = matlab.io.datastore.BlockedFileSet(location,'IncludeSubfolders',true)

Расширения файлов, указанные как символьный вектор, массив ячеек символьных векторов или строковый массив. Можно использовать пустые кавычки '' для представления файлов без расширений.

Если 'FileExtensions' не указан, то BlockedFileSet автоматически включает все расширения файлов.

Пример: 'FileExtensions','.jpg'

Пример: 'FileExtensions',{'.txt','.csv'}

Флаг включения вложенной папки, указанный как числовой или логический 1 (true) или 0 (false). Определить true для включения всех файлов и подпапок в каждую папку или false для включения только файлов в каждую папку.

Пример: 'IncludeSubfolders',true

Свойства

развернуть все

Размер блока в байтах, используемый для разделения информации файла, указанный как одно из следующих значений:

  • 'file' - Использовать размер следующего файла в коллекции.

  • числовой скаляр - используйте указанное значение в байтах.

Пример: 'BlockSize',2000

Альтернативные корневые пути файловой системы, указанные как строковый массив или массив ячеек. Использовать 'AlternateFileSystemRoots' при создании хранилища данных на локальном компьютере, но при необходимости доступа и обработки данных на другом компьютере (возможно, в другой операционной системе). Кроме того, при обработке данных с помощью Parallel Computing Toolbox™ и MATLAB ® Parallel Server™ данные хранятся на локальных компьютерах с копией данных, доступных на различных облачных платформах или кластерных машинах, необходимо использовать'AlternateFileSystemRoots' для связывания корневых путей.

  • Чтобы связать набор корневых путей, эквивалентных друг другу, укажите 'AlternateFileSystemRoots' в виде строкового массива. Например,

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

  • Чтобы связать несколько наборов корневых путей, эквивалентных хранилищу данных, укажите 'AlternateFileSystemRoots' как массив ячеек, содержащий несколько строк, где каждая строка представляет набор эквивалентных корневых путей. Укажите каждую строку в массиве ячеек как строковый массив или массив ячеек из векторов символов. Например:

    • Определить 'AlternateFileSystemRoots' как массив ячеек строковых массивов.

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

    • Либо укажите 'AlternateFileSystemRoots' как массив ячеек массива ячеек символьных векторов.

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

Значение 'AlternateFileSystemRoots' должны удовлетворять следующим условиям:

  • Содержит одну или несколько строк, где каждая строка указывает набор эквивалентных корневых путей.

  • Каждая строка указывает несколько корневых путей, и каждый корневой путь должен содержать не менее двух символов.

  • Корневые пути уникальны и не являются подпапками друг друга.

  • Содержит по крайней мере одну запись корневого пути, указывающую на расположение файлов.

Дополнительные сведения см. в разделе Настройка хранилища данных для обработки на различных машинах или кластерах.

Пример: ["Z:\datasets","/mynetwork/datasets"]

Типы данных: string | cell

Это свойство доступно только для чтения.

Число блоков в заблокированном объекте набора файлов, указанное как числовой скаляр.

Пример: bs.NumBlocks

Типы данных: double

Это свойство доступно только для чтения.

Количество блоков, считанных из BlockedFileSet , указанный как числовой скаляр.

Пример: bs.NumBlocksRead

Типы данных: double

Это свойство доступно только для чтения.

Информация о блоках в BlockedFileSet объект, возвращенный как BlockInfo объект со следующими свойствами:

  • Filename - Имя файла в BlockedFileSet объект. Имя содержит полный путь к файлу.

  • FileSize - Размер файла в байтах.

  • Offset - Начало смещения в файле для чтения.

  • BlockSize - размер блока в байтах.

Для получения сведений об определенном блоке укажите индекс блока. Например, bs.BlockInfo(2) возвращает информацию для второго блока. При звонке bs.BlockInfo без указания индекса возвращает информацию для всех блоков.

Пример: bs.BlockInfo(2)

Функции объекта

hasPreviousBlockОпределить, имеет ли заблокированный набор файлов предыдущий блок
previousblock Информация о предыдущем блоке в заблокированном наборе файлов
hasNextBlockОпределить, имеет ли заблокированный набор файлов другой блок
nextblock Информация о следующем блоке в заблокированном наборе файлов
progress Определение количества прочитанных блоков или файлов
maxpartitions Максимальное количество разделов
partition Объект набора файлов секционирования
subsetСоздание подмножества хранилища данных или набора файлов
reset Сброс объекта набора файлов

Примеры

свернуть все

Создайте заблокированный набор файлов и запросите информацию для определенных блоков в заблокированном наборе файлов.

Создание заблокированного набора файлов bs для набора файлов и укажите размер блока.

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

    {'accidents.mat'}    {'airlineResults...'}    {'census.mat'}

  Column 4

    {'earth.mat'}

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

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

Получение информации для конкретных блоков с помощью nextblock или путем запроса BlockInfo и указание индекса. Получение информации для последовательных блоков с помощью nextblock. Например, получите информацию для первых двух блоков в наборе.

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

    "/mathworks/devel/bat/BR2021ad/build/matlab/toolbox/matlab/demos/accidents.mat"      7343        0         2000   

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

    "/mathworks/devel/bat/BR2021ad/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/BR2021ad/build/matlab/toolbox/matlab/demos/earth.mat"     32522      32000        522   

Представлен в R2020a