matlab.io.datastore.BlockedFileSet

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

Описание

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

Создание

Описание

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

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

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

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

    • Задайте 'AlternateFileSystemRoots' как массив ячеек из строковых массивов.

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

    • Кроме того, задайте 'AlternateFileSystemRoots' как массив ячеек массива ячеек из векторов символов.

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

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

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

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

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

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

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

Пример: ["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Создайте подмножество datastore или набора файлов
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