exponenta event banner

написать

Запись массива высокого уровня в локальные и удаленные расположения для контрольных точек

Описание

пример

write(location,tA) вычисляет значения в массиве tall tA и записывает массив в файлы в папке, указанной location. Данные хранятся в эффективном двоичном формате, пригодном для обратного считывания с использованием datastore(location).

пример

write(filepattern,tA) использует расширение файла из filepattern для определения формата вывода. filepattern должна включать папку для записи файлов, за которой следует имя файла, содержащее подстановочный символ *. Подстановочный символ представляет инкрементные числа для создания уникальных имен файлов. Например, write('folder/myfile_*.csv',tA).

пример

write(___,Name,Value) указывает дополнительные параметры с одним или несколькими аргументами пары имя-значение, использующими любой из предыдущих синтаксисов. Например, можно указать тип файла с помощью 'FileType' и допустимый тип файла ('mat', 'seq', 'parquet', 'text', или 'spreadsheet'), или можно указать пользовательскую функцию записи для обработки данных с помощью 'WriteFcn' и дескриптор функции.

Примеры

свернуть все

Запишите массив высокого уровня на диск, а затем восстановите массив высокого уровня, создав новое хранилище данных для записанных файлов. Этот процесс полезен для сохранения работы или совместного использования массива высокого уровня с коллегой.

Создание хранилища данных для airlinesmall.csv набор данных. Выберите только Year, Month, и UniqueCarrier переменные и лечить 'NA' значения как отсутствующие данные. Преобразование хранилища данных в таблицу высокого уровня.

ds = datastore('airlinesmall.csv');
ds.TreatAsMissing = 'NA';
ds.SelectedVariableNames = {'Month','Year','UniqueCarrier'};
tt = tall(ds)
tt =

  M×3 tall table

    Month    Year    UniqueCarrier
    _____    ____    _____________

     10      1987        'PS'     
     10      1987        'PS'     
     10      1987        'PS'     
     10      1987        'PS'     
     10      1987        'PS'     
     10      1987        'PS'     
     10      1987        'PS'     
     10      1987        'PS'     
      :       :            :
      :       :            :

Сортируйте данные в порядке убывания по годам и извлеките первые 25 строк. Полученная таблица высот не оценивается.

tt_new = topkrows(tt,25,'Year')
tt_new =

  M×3 tall table

    Month    Year    UniqueCarrier
    _____    ____    _____________

      ?       ?            ?      
      ?       ?            ?      
      ?       ?            ?      
      :       :            :
      :       :            :

Preview deferred. Learn more.

Сохранение результатов в новую папку с именем ExampleData на C:\ диск. (Можно указать другое место записи, особенно если вы не используете компьютер Windows ®.) write функция оценивает массив tall перед записью файлов, поэтому нет необходимости использовать gather перед сохранением данных.

location = 'C:\ExampleData';
write(location,tt_new)
Writing tall data to folder C:\ExampleData
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.52 sec
Evaluation completed in 1.2 sec

Ясно tt и ds из рабочего каталога. Чтобы восстановить таблицу высокого уровня, записанную на диск, сначала создайте новое хранилище данных, которое ссылается на тот же каталог. Затем преобразуйте хранилище данных в высокую таблицу. Поскольку таблица высокого уровня была оценена до записи на диск, теперь на экране отображается предварительный просмотр значений.

clear tt ds
ds2 = datastore(location);
tt2 = tall(ds2)
tt2 =

  M×3 tall table

    Month    Year    UniqueCarrier
    _____    ____    _____________

      1      2008        'WN'     
      1      2008        'WN'     
      1      2008        'WN'     
      1      2008        'WN'     
      1      2008        'WN'     
      1      2008        'WN'     
      1      2008        'WN'     
      1      2008        'WN'     
      :       :            :
      :       :            :

Создание таблицы высокого уровня, ссылающейся на tsunamis.xlsx файл данных, содержащий данные с временной меткой о местоположении, величине и причине цунами.

ds = spreadsheetDatastore('tsunamis.xlsx');
T = tall(ds)
T =

  Mx20 tall table

    Latitude    Longitude    Year    Month    Day    Hour    Minute    Second    ValidityCode            Validity             CauseCode          Cause           EarthquakeMagnitude          Country                   Location             MaxHeight    IidaMagnitude    Intensity    NumDeaths    DescDeaths
    ________    _________    ____    _____    ___    ____    ______    ______    ____________    _________________________    _________    __________________    ___________________    ___________________    __________________________    _________    _____________    _________    _________    __________

      -3.8        128.3      1950     10       8       3       23       NaN           2          {'questionable tsunami' }        1        {'Earthquake'    }            7.6            {'INDONESIA'      }    {'JAVA TRENCH, INDONESIA'}       2.8            1.5            1.5          NaN          NaN    
      19.5         -156      1951      8      21      10       57       NaN           4          {'definite tsunami'     }        1        {'Earthquake'    }            6.9            {'USA'            }    {'HAWAII'                }       3.6            1.8            NaN          NaN          NaN    
     -9.02       157.95      1951     12      22     NaN      NaN       NaN           2          {'questionable tsunami' }        6        {'Volcano'       }            NaN            {'SOLOMON ISLANDS'}    {'KAVACHI'               }         6            2.6            NaN          NaN          NaN    
     42.15       143.85      1952      3       4       1       22        41           4          {'definite tsunami'     }        1        {'Earthquake'    }            8.1            {'JAPAN'          }    {'SE. HOKKAIDO ISLAND'   }       6.5            2.7              2           33            1    
      19.1         -155      1952      3      17       3       58       NaN           4          {'definite tsunami'     }        1        {'Earthquake'    }            4.5            {'USA'            }    {'HAWAII'                }         1            NaN            NaN          NaN          NaN    
      43.1        -82.4      1952      5       6     NaN      NaN       NaN           1          {'very doubtful tsunami'}        9        {'Meteorological'}            NaN            {'USA'            }    {'LAKE HURON, MI'        }      1.52            NaN            NaN          NaN          NaN    
     52.75        159.5      1952     11       4      16       58       NaN           4          {'definite tsunami'     }        1        {'Earthquake'    }              9            {'RUSSIA'         }    {'KAMCHATKA'             }        18            4.2              4         2236            3    
        50        156.5      1953      3      18     NaN      NaN       NaN           3          {'probable tsunami'     }        1        {'Earthquake'    }            5.8            {'RUSSIA'         }    {'N. KURIL ISLANDS'      }       1.5            0.6            NaN          NaN          NaN    
       :            :         :        :       :      :        :         :            :                      :                    :                :                      :                      :                         :                     :              :              :            :            :
       :            :         :        :       :      :        :         :            :                      :                    :                :                      :                      :                         :                     :              :              :            :            :

Объединить Year, Month, Day, Hour, Minute, и Second в одну переменную datetime, а затем удалите эти переменные из таблицы. Удалите все строки, содержащие отсутствующие данные.

T.DateTime = datetime(T.Year, T.Month, T.Day, T.Hour, T.Minute, T.Second);
T(:,3:8) = [];
TT = rmmissing(T)
TT =

  Mx15 tall table

    Latitude    Longitude    ValidityCode          Validity          CauseCode               Cause                EarthquakeMagnitude       Country                 Location              MaxHeight    IidaMagnitude    Intensity    NumDeaths    DescDeaths          DateTime      
    ________    _________    ____________    ____________________    _________    ____________________________    ___________________    _____________    ____________________________    _________    _____________    _________    _________    __________    ____________________

     42.15        143.85          4          {'definite tsunami'}        1        {'Earthquake'              }            8.1            {'JAPAN'    }    {'SE. HOKKAIDO ISLAND'     }        6.5           2.7              2           33           1         04-Mar-1952 01:22:41
     58.34       -136.52          4          {'definite tsunami'}        3        {'Earthquake and Landslide'}            8.3            {'USA'      }    {'SE. ALASKA, AK'          }     524.26           4.6              5            5           1         10-Jul-1958 06:15:53
     -39.5         -74.5          4          {'definite tsunami'}        1        {'Earthquake'              }            9.5            {'CHILE'    }    {'CENTRAL CHILE'           }         25           4.6              4         1260           3         22-May-1960 19:11:17
      -6.8         -80.7          4          {'definite tsunami'}        1        {'Earthquake'              }            6.8            {'PERU'     }    {'PERU'                    }          9           3.2            2.5           66           2         20-Nov-1960 22:01:56
      61.1        -147.5          4          {'definite tsunami'}        3        {'Earthquake and Landslide'}            9.2            {'USA'      }    {'PRINCE WILLIAM SOUND, AK'}         67           6.1              5          221           3         28-Mar-1964 03:36:14
     38.65         139.2          4          {'definite tsunami'}        1        {'Earthquake'              }            7.5            {'JAPAN'    }    {'NW. HONSHU ISLAND'       }        5.8           2.7              2           26           1         16-Jun-1964 04:01:44
       0.2         119.8          4          {'definite tsunami'}        1        {'Earthquake'              }            7.8            {'INDONESIA'}    {'BANDA SEA'               }         10           3.3              3          200           3         14-Aug-1968 22:14:19
      -3.1         118.9          4          {'definite tsunami'}        1        {'Earthquake'              }            6.9            {'INDONESIA'}    {'MAKASSAR STRAIT'         }          4             2              2          600           3         23-Feb-1969 00:36:56
       :            :             :                   :                  :                     :                           :                   :                       :                      :              :              :            :            :                  :
       :            :             :                   :                  :                     :                           :                   :                       :                      :              :              :            :            :                  :

Запишите таблицу в виде файла электронной таблицы в удаленное расположение в хранилище Amazon S3 ®. Чтобы прочитать или записать данные в Amazon S3 необходимо установить AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY переменные среды, использующие учетные данные для вашей учетной записи. Дополнительные сведения см. в разделе Работа с удаленными данными.

setenv('AWS_ACCESS_KEY_ID', 'YOUR_AWS_ACCESS_KEY_ID'); 
setenv('AWS_SECRET_ACCESS_KEY', 'YOUR_AWS_SECRET_ACCESS_KEY'); 

location = 's3://bucketname/preprocessedData/';
write(location, TT, 'FileType', 'spreadsheet')

Для обратного считывания данных используйте datastore указывает на удаленное местоположение, в котором сейчас находятся данные.

ds = datastore(location);
tt = tall(ds);

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

Создание хранилища данных изображений, ссылающегося на все образцы изображений в toolbox/matlab/demos папка. Выбранные изображения имеют расширения .jpg, .tif, и .png. Преобразование хранилища данных в массив с высокой ячейкой.

demoFolder = fullfile(matlabroot,'toolbox','matlab','demos');
ds = imageDatastore(demoFolder,'FileExtensions',{'.jpg' '.tif' '.png'});
T = tall(ds);

Поместите одно из изображений в память и отобразите его.

I = gather(T(1));
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 3 sec
Evaluation completed in 3.2 sec
imshow(I{1},'InitialMagnification',30)

write не поддерживает файлы изображений напрямую, поэтому для записи изображений в другом формате необходимо создать новую функцию для обработки записи файлов. Функция записи получает два входа от write:

  • info - структура, содержащая поля с информацией о текущем блоке данных. Эти поля можно использовать для создания собственного уникального имени файла или просто использовать SuggestedFilename для использования имени, предложенного write.

  • data - текущий блок данных, полученный с помощью read в хранилище данных.

Функция imageWriter использует имя файла, предложенное write, и использует imwrite чтобы записать файлы изображений на диск как .jpg файлы. Сохраните эту функцию в текущей рабочей папке.

type imageWriter
function imageWriter(info, data)
  filename = info.SuggestedFilename;
  imwrite(data{:}, filename)
end

Запись изображений в хранилище данных в новую папку с именем exampleImages на C:\ диск. (Вы можете использовать другое расположение, особенно если вы не используете компьютер Windows ®.) ПроходimageWriter в качестве пользовательской функции записи с использованием 'WriteFcn' аргумент пары имя-значение.

location = 'C:\exampleImages\image_*.jpg';
write(location, T, 'WriteFcn', @imageWriter)
Writing tall data to folder C:\exampleImages
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.71 sec
Evaluation completed in 0.98 sec

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

dir C:\exampleImages
.                   image_1_000001.jpg  image_3_000001.jpg  image_5_000001.jpg  
..                  image_2_000001.jpg  image_4_000001.jpg  image_6_000001.jpg  

Чтобы прочитать изображения в MATLAB ®, создайте хранилище данных, которое ссылается на то же самое местоположение.

ds = imageDatastore(location);
T = tall(ds)
T =

  6×1 tall cell array

    {1024×2048×3 uint8}
    { 650×600×3  uint8}
    {1024×2048×3 uint8}
    { 650×600×3  uint8}
    { 480×640×3  uint8}
    { 480×640×3  uint8}

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

свернуть все

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

  • Существующая пустая папка

  • Создать папку, которая write создает

Можно записывать данные в локальные папки на компьютере, папки в общей сети или в удаленные папки в HDFS™, Azure ® или Amazon S3™. Дополнительные сведения о чтении и записи данных в удаленные расположения см. в разделе Работа с удаленными данными.

Дополнительные рекомендации относятся к Hadoop ® и Apache Spark™:

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

  • Перед записью в HDFS установите HADOOP_HOME, HADOOP_PREFIX, или MATLAB_HADOOP_INSTALL переменная среды для папки, в которой установлен Hadoop.

  • Перед записью в Apache Spark установите SPARK_HOME переменная среды для папки, в которой установлен Apache Spark.

Пример: location = 'hdfs:///some/output/folder' указывает URL-адрес HDFS.

Пример: location = '../../dir/data' указывает относительный путь к файлу.

Пример: location = 'C:\Users\MyName\Desktop\data' указывает абсолютный путь к папке рабочего стола Windows ®.

Пример: location = 'file:///path/to/data' указывает абсолютный путь URI к папке.

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

Входной массив, заданный как массив высокого уровня.

Шаблон именования файлов, заданный как строка или символьный вектор. Шаблон именования файлов должен содержать папку для записи файлов, за которой следует имя файла, содержащее подстановочный символ *. write функция заменяет подстановочный символ последовательными числами, чтобы обеспечить уникальные имена файлов.

Пример: write('folder/data_*.txt',tA) записывает массив высокого уровня tA как серия .txt файлы в folder с именами файлов data_1.txt, data_2.txtи так далее.

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

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

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

Пример: write('C:\myData', tX, 'FileType', 'text', 'WriteVariableNames', false) записывает массив высокого уровня tX кому C:\myData как коллекция текстовых файлов, в которых имена переменных не используются в качестве заголовков столбцов.
Общие параметры

свернуть все

Тип файла, указанный как разделенная запятыми пара, состоящая из 'FileType' и один из допустимых типов файлов: 'auto', 'mat', 'parquet', 'seq', 'text', или 'spreadsheet'.

Используйте 'FileType' пара имя-значение с location для указания типа записываемых файлов. По умолчанию write пытается автоматически определить соответствующий тип файла. Нет необходимости указывать 'FileType' аргумент пары имя-значение, если write может определить тип файла из расширения в location или filepattern аргументы. write может определить тип файла из следующих расширений:

  • .mat для файлов данных MATLAB ®

  • .parquet или .parq для паркетных файлов

  • .seq для файлов последовательности

  • .txt, .dat, или .csv для текстовых файлов с разделителями

  • .xls, .xlsx, .xlsb, .xlsm, .xltx, или .xltm для файлов электронных таблиц

Пример: write('C:\myData', tX, 'FileType', 'text')

Пользовательская функция записи, заданная как разделенная запятыми пара, состоящая из 'WriteFcn' и дескриптор функции. Указанная функция получает блоки данных от tA и отвечает за создание выходных файлов. Вы можете использовать 'WriteFcn' аргумент пары имя-значение для записи данных в различных форматах, даже если write не поддерживает формат вывода напрямую.

Функциональная подпись

Пользовательская функция записи должна принимать два входных аргумента, info и data:

function myWriter(info, data)

  • data содержит блок данных из tA.

  • info - структура с полями, содержащими информацию о блоке данных. Поля можно использовать для создания нового имени файла, которое является глобально уникальным в конечном расположении. Поля структуры:

    ОбластьОписание
    RequiredLocationПолный путь к временной папке вывода. В конечное место назначения копируются только файлы, записанные в эту папку.
    RequiredFilePatternШаблон файла, необходимый для выходных имен файлов. Это поле пусто, если указано только имя папки.
    SuggestedFilenameПолное, глобально уникальное имя файла, отвечающее требованиям к расположению и именованию.
    PartitionIndexИндекс записываемого раздела массива tall.
    NumPartitionsОбщее число разделов в массиве высокого уровня.
    BlockIndexInPartitionПоложение текущего блока данных в разделе.
    IsFinalBlocktrue если текущий блок является окончательным блоком раздела.

Именование файлов

Имя файла, используемое для выходных файлов, определяет порядок datastore позже считывает файлы обратно в. Если порядок файлов имеет значение, то лучше всего использовать SuggestedFilename для присвоения имени файлам, поскольку предлагаемое имя гарантирует порядок файлов. Если предлагаемое имя файла не используется, пользовательская функция записи должна создать глобально уникальные, правильно упорядоченные имена файлов. Имена файлов должны соответствовать шаблону именования, описанному в RequiredFilePattern. При работе параллельно с Parallel Computing Toolbox™ имена файлов должны быть уникальными и правильно упорядоченными между работниками, даже если каждый работник записывает в свою локальную папку.

Массивы с несколькими разделами

Массив высокого уровня можно разделить на секции, чтобы упростить выполнение вычислений в массиве параллельно с панелью параллельных вычислений. Каждый из разделов по-прежнему состоит из меньших блоков, которые индивидуально вписываются в память.

info содержит несколько полей, связанных с секциями: PartitionIndex, NumPartitions, BlockIndexInPartition, и IsFinalBlock. Эти поля полезны при записи одного файла и добавлении к нему, что является обычной задачей для массивов с большими разделами, разделенными на множество блоков. Пользовательская функция записи вызывается один раз на блок, и блоки в одном разделе всегда записываются по порядку одним и тем же работником. Однако разные разделы могут быть написаны разными работниками.

Пример функции

Простая функция записи, которая записывает файлы электронных таблиц

function dataWriter(info, data)
  filename = info.SuggestedFilename;
  writetable(data, filename, 'FileType', 'spreadsheet')
end
Призвать dataWriter как функция записи для некоторых данных tt, используйте эти команды.
tt = tall(array2table(rand(5000,3)));
location = '/tmp/MyData/tt_*.xlsx';
write(location, tt, 'WriteFcn', @dataWriter);
Для каждого блока dataWriter функция использует предлагаемое имя файла в info структура и вызовы writetable для записи файла электронной таблицы. Предлагаемое имя файла учитывает шаблон именования файлов, указанный в location аргумент.

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

Текстовые файлы или файлы электронных таблиц

свернуть все

Индикатор для записи имен переменных в виде заголовков столбцов, определяемый как разделенная запятыми пара, состоящая из 'WriteVariableNames' и числовой или логический 1 (true) или 0 (false).

Индикатор

Поведение

true

Имена переменных включаются в качестве заголовков столбцов выходных данных. (по умолчанию)

false

Имена переменных не включаются в выходные данные.

Языковой стандарт для даты записи, указанный как пара, разделенная запятыми, состоящая из 'DateLocale' и вектор символов или строковый скаляр. При написании datetime значения для файла, используйте DateLocale для указания языкового стандарта, в котором write следует писать имена и сокращения месяцев и дней недели. Символьный вектор или строка принимает вид xx_YY, где xx - строчный двухбуквенный код ISO 639-1, указывающий язык, и YY является верхним кодом ISO 3166-1 альфа-2, указывающим страну. Список общих значений для языкового стандарта см. в разделе Locale аргумент пары имя-значение для datetime функция.

Для файлов Excel ® write записывает переменные, содержащие datetime массивы как даты Excel и игнорирует 'DateLocale' значение параметра. Если datetime переменные содержат годы до 1900 или 1904, затем write записывает переменные в виде текста. Дополнительные сведения о датах Excel см. в разделе Различия между системой дат 1900 и 1904 в Excel.

Пример: 'DateLocale','ja_JP' или 'DateLocale',"ja_JP"

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

Только текстовые файлы

свернуть все

Символ разделителя поля, указанный как разделенная запятыми пара, состоящая из 'Delimiter' и один из этих спецификаторов.

Спецификатор

Разделитель поля

','

'comma'

Запятая (по умолчанию)

' '

'space'

Пространство

'\t'

'tab'

Счет

';'

'semi'

Точка с запятой

'|'

'bar'

Вертикальная полоса

Вы можете использовать 'Delimiter' аргумент пары имя-значение только для текстовых файлов с разделителями.

Пример: 'Delimiter','space' или 'Delimiter',"space"

Индикатор для записи текста в кавычках, указанный как разделенная запятыми пара, состоящая из 'QuoteStrings' и либо false или true. Если 'QuoteStrings' имеет значение true, то write заключает текст в двойные кавычки и заменяет все символы в двойных кавычках, которые отображаются как часть этого текста, двумя символами в двойных кавычках. Пример см. в разделе Запись текста с кавычками в CSV-файл.

Вы можете использовать 'QuoteStrings' аргумент пары имя-значение только с разделителями текстовых файлов.

Схема кодирования символов, связанная с файлом, заданная как разделенная запятыми пара, состоящая из 'Encoding' и 'system' или имя стандартной схемы кодирования символов, как одно из значений в этой таблице. Если не указать кодировку или указать кодировку как 'system', write для записи файла используется системная кодировка по умолчанию.

'Big5'

'ISO-8859-1'

'windows-874'

'Big5-HKSCS'

'ISO-8859-2'

'windows-949'

'CP949'

'ISO-8859-3'

'windows-1250'

'EUC-KR'

'ISO-8859-4'

'windows-1251'

'EUC-JP'

'ISO-8859-5'

'windows-1252'

'EUC-TW'

'ISO-8859-6'

'windows-1253'

'GB18030'

'ISO-8859-7'

'windows-1254'

'GB2312'

'ISO-8859-8'

'windows-1255'

'GBK'

'ISO-8859-9'

'windows-1256'

'IBM866'

'ISO-8859-11'

'windows-1257'

'KOI8-R'

'ISO-8859-13'

'windows-1258'

'KOI8-U'

'ISO-8859-15'

'US-ASCII'

 

'Macintosh'

'UTF-8'

 

'Shift_JIS'

 

Пример: 'Encoding','system' или 'Encoding',"system" использует системную кодировку по умолчанию.

Только файлы электронных таблиц

свернуть все

Целевой лист, указанный как разделенная запятыми пара, состоящая из 'Sheet' и вектор символов или строковый скаляр, содержащий имя листа или положительное целое число, указывающее индекс листа. Имя листа не может содержать двоеточие (:). Чтобы определить имена листов в файле электронной таблицы, используйте sheets = sheetnames(filename). Дополнительные сведения см. в разделе sheetnames.

Если лист не существует, то write добавляет новый лист в конце коллекции листов. Если лист имеет индекс, превышающий число листов, то write добавляет пустые листы до тех пор, пока число листов в книге не сравняется с индексом листа. В любом случае write создает предупреждение, указывающее, что добавлен новый лист.

Вы можете использовать 'Sheet' аргумент пары имя-значение только с файлами электронных таблиц.

Пример: 'Sheet',2

Пример: 'Sheet', 'MySheetName'

Типы данных: char | string | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Только файлы паркета

свернуть все

Алгоритм сжатия паркета, указанный как одно из этих значений.

  • 'snappy', 'brotli', 'gzip', или 'uncompressed'. Если указать один алгоритм сжатия, то write сжимает все переменные, используя один и тот же алгоритм.

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

В общем, 'snappy' имеет лучшую производительность для чтения и письма, 'gzip' имеет более высокую степень сжатия при стоимости большего времени обработки ЦП, и 'brotli' обычно создает наименьший размер файла при стоимости скорости сжатия.

Пример: write('C:\myData', tX, 'FileType', 'parquet', 'VariableCompression', 'brotli')

Пример: write('C:\myData', tX, 'FileType', 'parquet', 'VariableCompression', {'brotli' 'snappy' 'gzip'})

Имена схем кодирования, указанные как одно из следующих значений:

  • 'auto'write использование 'plain' кодирование для логических переменных, и 'dictionary' кодирование для всех остальных.

  • 'dictionary', 'plain' - Если указать одну схему кодирования, то write кодирует все переменные с этой схемой.

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

В общем, 'dictionary' кодирование приводит к меньшему размеру файла, но 'plain' кодирование может быть более быстрым для переменных, которые не содержат много повторяющихся значений. Если размер словаря или количество уникальных значений становится слишком большим, кодировка автоматически возвращается к простой кодировке. Дополнительные сведения о кодировании паркета см. в разделе Определения кодирования паркета.

Пример: write('myData.parquet', T, 'FileType', 'parquet', 'VariableEncoding', 'plain')

Пример: write('myData.parquet', T, 'FileType', 'parquet', 'VariableEncoding', {'plain' 'dictionary' 'plain'})

Используемая версия паркета, указанная как '1.0' или '2.0'. По умолчанию '2.0' предлагает наиболее эффективное хранилище, но вы можете выбрать '1.0' для самой широкой совместимости с внешними приложениями, поддерживающими формат Parquet.

Внимание

Паркет версии 1.0 имеет ограничение, что он не может передавать переменные типа uint32 (они считываются обратно в MATLAB как int64).

Ограничения

В некоторых случаях write(location, T, 'FileType', type) создает файлы, которые не представляют исходный массив T точно. Если вы используете datastore(location) для чтения файлов результат может не иметь того же формата или содержимого, что и исходная таблица высокого уровня.

  1. Для 'text' и 'spreadsheet' типы файлов, write использует следующие правила:

    • write выводит числовые переменные с использованием longG формат и категориальные, символьные или строковые переменные как текст без кавычек.

    • Для нетекстовых переменных с несколькими столбцами: write выводит несколько разделителей в каждой строке и создает подходящие заголовки столбцов для первой строки файла.

    • write выводит переменные с более чем двумя измерениями в качестве двумерных переменных, а конечные размеры свернуты.

    • Для возвращающих значение ячейки переменных с содержимым, которое является числовым, логическим, символьным или категориальным, write выводит содержимое каждой ячейки в виде одной строки в нескольких полях, разделенных разделителями. Если ячейки имеют другой тип данных, write выводит одно пустое поле.

    Не используйте 'text' или 'spreadsheet' если необходимо записать точную контрольную точку массива высокого уровня.

  2. Для 'parquet' в некоторых случаях формат Parquet не может полностью представлять таблицы MATLAB или типы данных расписания. Если вы используете parquetread или datastore для чтения файлов результат может не иметь того же формата или содержимого, что и исходная таблица высокого уровня. Дополнительные сведения см. в разделе Сопоставления типов данных паркета Apache.

Совет

  • Используйте write функция для создания контрольных точек или снимков ваших данных в процессе работы, особенно при работе с огромными наборами данных. Эта практика позволяет восстанавливать массивы tall непосредственно из файлов на диске, а не повторно выполнять все команды, создавшие массив tall.

Расширенные возможности

Массивы высокого уровня
Вычислять с массивами, в которых больше строк, чем в памяти.

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