запись

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

Синтаксис

write(location,tA)
write(filepattern,tA)
write(___,Name,Value)

Описание

пример

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

пример

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

пример

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

Примеры

свернуть все

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

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

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 оценивает длинный массив до записывания файлов, таким образом, нет никакой потребности использовать функцию 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 из вашей рабочей директории. Чтобы восстановиться длинная таблица, которая была записана в диск, сначала создайте новый datastore, который ссылается на ту же директорию. Затем преобразуйте datastore в длинную таблицу. Поскольку длинная таблица была оценена прежде чем быть записанным в диск, отображение теперь включает предварительный просмотр значений.

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 = datastore('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, таким как файлы изображений.

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

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 на datastore.

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

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

Напишите изображения в datastore к новой папке под названием 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®, создайте datastore, который ссылается на то же местоположение.

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™:

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

  • Прежде, чем записать в HDFS, набор HADOOP_HOME, HADOOP_PREFIX или переменная окружения MATLAB_HADOOP_INSTALL к папке, где Hadoop установлен.

  • Прежде, чем записать в Spark Apache, набор переменная окружения SPARK_HOME к папке, где Spark Apache установлен.

Пример: location = 'hdfs:///some/output/folder'

Пример: location = '../../dir/data'

Пример: location = 'C:\Users\MyName\Desktop'

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

Входной массив, заданный как длинный массив.

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

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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Индекс раздела длинного массива записан.
    NumPartitionsОбщее количество разделов в длинном массиве.
    BlockIndexInPartitionПоложение текущего блока данных в разделе.
    IsFinalBlocktrue, если текущий блок является итоговым блоком раздела.

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

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

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

Можно разделить длинный массив на разделы, чтобы упростить выполняющие вычисления на массиве параллельно с 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 содержат годы или до 1 900 или до 1904, то write пишет переменные как текст. Для получения дополнительной информации о датах Excel смотрите Различия между 1900 и 1 904 системами дат в 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' и вектора символов или скаляра строки, содержащего имя рабочего листа или положительное целое число, указывающее на индекс рабочего листа. Имя рабочего листа не может содержать двоеточие (:). Чтобы определить имена листов в файле электронной таблицы, используйте [status,sheets] = xlsfinfo(filename).

Если лист не существует, то 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 записывает Паркету 2,0 файла с помощью схемы кодирования словаря Паркета. Эта схема кодирования является самой эффективной, когда количество уникальных значений не является слишком большим. Если размер словаря или количество уникальных значений растут, чтобы быть слишком большими, то кодирование автоматически отступает к простому кодированию.

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

Пример: write('C:\myData', tX, 'FileType', 'parquet', 'VariableCompression', {'Brotli' 'Snappy' 'Gzip'})

Ограничения

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

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

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

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

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

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

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

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

Советы

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

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

"Высокие" массивы
Осуществление вычислений с массивами, которые содержат больше строк, чем помещается в памяти.

Введенный в R2017b

Для просмотра документации необходимо авторизоваться на сайте