write

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

Описание

пример

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 ®.) The 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 = 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, таких как файлы изображений.

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

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

  • Если папка недоступна локально, то полный путь к папке должен быть равномерным указателем ресурса (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 для файлов Parquet

  • .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 переменные содержат годы до 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

Только файлы Parquet

свернуть все

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

  • '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' кодирование может быть более быстрым для переменных, которые не содержат много повторяющихся значений. Если размер словаря или количества уникальных значений увеличивается, чтобы быть слишком большим, то кодировка автоматически возвращается к простой кодировке. Для получения дополнительной информации о кодировках Parquet, смотрите Определения кодировки Parquet.

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

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

Используемая версия Parquet, заданная как '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 или типы данных timetable. Если вы используете parquetread или datastore чтобы считать файлы, результат может иметь не такой формат или содержимое, как исходная длинная таблица. Для получения дополнительной информации смотрите Apache Parquet Data Type Отображений.

Совет

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

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

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

Введенный в R2016b