Запишите распределенные данные в выходное местоположение
write(
написали значения в распределенном массиве location
,D
)D
к файлам в папке location
. Данные хранятся в эффективном двоичном формате, подходящем для чтения назад с помощью datastore(location)
. Если не распределенный по первому измерению, MATLAB® перераспределяет данные перед записью, так, чтобы получившиеся файлы могли быть перечитаны с помощью datastore
.
write(
использует расширение файла от filepattern
,D
)filepattern
определить выходной формат. filepattern
должен включать папку, чтобы записать файлы во вместе с именем файла, которое включает подстановочный знак *
. Подстановочный знак представляет инкрементные числа для генерации уникальных имен файлов, например, write('folder/myfile_*.csv',D)
.
write(___,
задает дополнительные опции с одним или несколькими аргументами пары "имя-значение" с помощью любого из предыдущих синтаксисов. Например, можно задать тип файла с Name,Value
)'FileType'
и тип правильного файла ('mat'
, 'seq'
, 'parquet'
Текст
, или 'spreadsheet'
), или можно задать пользовательскую функцию записи, чтобы обработать данные с 'WriteFcn'
и указатель на функцию.
В этом примере показано, как записать распределенный массив в файловую систему, затем считайте его назад использование datastore.
Создайте распределенный массив и запишите его в выходную папку.
d = distributed.rand(5000,1);
location = 'hdfs://myHadoopCluster/some/output/folder';
write(location, d);
Воссоздайте распределенный массив из записанных файлов.
ds = datastore(location); d1 = distributed(ds);
В этом примере показано, как записать распределенные массивы в различные форматы с помощью шаблона файла.
Составьте распределенную таблицу и запишите его в основанный на простом тексте формат, который могут считать много приложений.
dt = distributed(array2table(rand(5000,3)));
location = "/tmp/CSVData/dt_*.csv";
write(location, dt);
Воссоздайте распределенную таблицу из записанных файлов.
ds = datastore(location); dt1 = distributed(ds);
Можно записать распределенные данные и считать их назад как высокие данные и наоборот.
Создайте распределенное расписание и запишите его в диск.
dt = distributed(array2table(rand(5000,3)));
location = "/tmp/CSVData/dt_*.csv";
write(location, dt);
Создайте длинную таблицу из записанных файлов.
ds = datastore(location); tt = tall(ds);
В качестве альтернативы можно считать данные, записанные из высоких данных в распределенные данные. Создайте длинное расписание и запишите его в диск.
tt = tall(array2table(rand(5000,3)));
location = "/tmp/CSVData/dt_*.csv";
write(location, tt);
Читайте назад в распределенное расписание.
ds = datastore(location); dt = distributed(ds);
В этом примере показано, как записать распределенные массивы в файловую систему с помощью пользовательской функции записи.
Создайте простую функцию записи, которая выписывает файлы электронной таблицы.
function dataWriter(info, data) filename = info.SuggestedFilename; writetable(data, filename, "FileType", "spreadsheet"); end
Составьте распределенную таблицу и запишите его в диск с помощью пользовательской функции записи.
dt = distributed(array2table(rand(5000,3))); location = "/tmp/MyData/tt_*.xlsx"; write(location, dt, "WriteFcn", @dataWriter);
location
— Местоположение папки, чтобы записать данныеМестоположение папки, чтобы записать данные в виде вектора символов или строки. location
может задать полный или относительный путь. Заданная папка может иметь любой эти опции:
Существующая пустая папка, которая не содержит никакие другие файлы
Новая папка, что write
создает
Можно записать данные к локальным папкам на компьютере, папкам на общей сети, или к удаленным местоположениям, таким как Amazon S3™, Windows Azure® Storage Blob или Hadoop® Distributed File System (HDFS™). Для получения дополнительной информации о чтении и записывании данные к удаленным местоположениям, смотрите работу с Удаленными данными.
Пример: location = '../../dir/data'
задает путь к файлу прямого доступа.
Пример: location = 'C:\Users\MyName\Desktop\data'
задает абсолютный путь к папке рабочего стола Windows®.
Пример: location = 'file:///path/to/data'
задает абсолютный путь к URI к папке.
Пример: location = 'hdfs://myHadoopCluster/some/output/folder'
задает HDFS URL.
Пример: location = 's3://bucketname/some/output/folder'
задает местоположение Amazon S3.
Типы данных: char |
string
D
— Входной массивВходной массив в виде распределенного массива.
filepattern
— Шаблон именования файлаШаблон именования файла в виде строки или вектора символов. Шаблон именования файла должен содержать папку, чтобы записать файлы во вместе с именем файла, которое включает подстановочный знак *
. write
заменяет подстановочный знак на порядковые номера, чтобы гарантировать уникальные имена файлов.
Пример: write('folder/data_*.txt',D)
пишет распределенный массив D
как серия .txt
файлы в folder
с именами файлов data_1.txt
, data_2.txt
, и так далее.
Типы данных: char |
string
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
write('C:\myData', D, 'FileType', 'text', 'WriteVariableNames', false)
пишет распределенный массив D
к C:\myData
как набор текстовых файлов, которые не используют имена переменных в качестве заголовков столбцов.'FileType'
— Тип файла'auto'
(значение по умолчанию) | 'mat'
| 'parquet'
| 'seq'
| 'text'
| 'spreadsheet'
Тип файла в виде разделенной запятой пары, состоящей из 'FileType'
и одни из позволенных типов файлов: 'auto'
, 'mat'
, 'parquet'
, 'seq'
Текст
, или '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', D, 'FileType', 'text')
'WriteFcn'
— Пользовательская функция записиПользовательская функция записи в виде разделенной запятой пары, состоящей из 'WriteFcn'
и указатель на функцию. Заданная функция получает блоки данных от D
и ответственно за создание выходных файлов. Можно использовать 'WriteFcn'
аргумент пары "имя-значение", чтобы записать данные во множестве форматов, даже если выходной формат непосредственно не поддерживается write
.
Пользовательская функция записи должна принять два входных параметра, info
и data
:
function myWriter(info, data)
data
содержит блок данных от D
.
info
структура с полями, которые содержат информацию о блоке данных. Можно использовать поля, чтобы создать новое имя файла, которое глобально уникально в итоговом местоположении. Поля структуры:
Поле | Описание |
---|---|
RequiredLocation | Полностью определенный путь к временной выходной папке. Все выходные файлы должны быть записаны в эту папку. |
RequiredFilePattern | Шаблон файла требуется для имен выходного файла. Это поле пусто, если только имя папки задано. |
SuggestedFilename | Полностью определенное, глобально уникальное имя файла, которое соответствует требования именования и местоположение. |
PartitionIndex | Индекс распределенного раздела массивов записан. |
NumPartitions | Общее количество разделов в распределенном массиве. |
BlockIndexInPartition | Положение текущего блока данных в разделе. |
IsFinalBlock | true если текущий блок является итоговым блоком раздела. |
Имя файла, используемое для выходных файлов, определяет порядок, что файлы читаются, въезжают задним ходом позже 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
как запись функционируют для некоторых данных D
, используйте команды:D = distributed(array2table(rand(5000,3))); location = '/tmp/MyData/D_*.xlsx'; write(location, D, 'WriteFcn', @dataWriter);
dataWriter
функционируйте использует предложенное имя файла в info
структура и вызовы writetable
выписать файл электронной таблицы. Предложенное имя файла учитывает шаблон именования файла, который задан в location
аргумент.
Типы данных: function_handle
'WriteVariableNames'
— Индикатор для записи имен переменных как заголовки столбцовtrue
или 1
(значение по умолчанию) | false
или 0
Индикатор для записи имен переменных как заголовки столбцов в виде разделенной запятой пары, состоящей из 'WriteVariableNames'
и числовой или логический 1
TRUE
) или 0
ложь
).
Индикатор | Поведение |
---|---|
| Имена переменных включены как заголовки столбцов выхода. Это поведение по умолчанию. |
| Имена переменных не включены в выход. |
'DateLocale'
— Локаль для записи датЛокаль для записи дат в виде разделенной запятой пары, состоящей из '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'
| ...Символ разделителя полей в виде разделенной запятой пары, состоящей из 'Delimiter'
и один из этих спецификаторов:
Спецификатор | Разделитель полей |
---|---|
| Запятая. Это поведение по умолчанию. |
| Пробел |
| Вкладка |
| Точка с запятой |
| Вертикальная панель |
Можно использовать 'Delimiter'
аргумент пары "имя-значение" только для файлов разделенного текста.
Пример: 'Delimiter','space'
или 'Delimiter',"space"
'QuoteStrings'
— Индикатор для записи заключенного в кавычки текстаfalse
(значение по умолчанию) | true
Индикатор для записи заключенного в кавычки текста в виде разделенной запятой пары, состоящей из 'QuoteStrings'
и любой false
или true
. Если 'QuoteStrings'
true
то write
заключает текст в двойные кавычки и заменяет любые символы двойной кавычки, которые появляются как часть того текста с двумя символами двойной кавычки. Для примера смотрите Запись Заключенный в кавычки текст к файлу CSV.
Можно использовать 'QuoteStrings'
аргумент пары "имя-значение" только с файлами разделенного текста.
'Encoding'
— Схема кодировки символов'UTF-8'
| 'ISO-8859-1'
| 'windows-1251'
| 'windows-1252'
| ...Схема кодировки символов, сопоставленная с файлом в виде разделенной запятой пары, состоящей из 'Encoding'
и 'system'
или схема кодирования стандартного символа называет как одно из значений в этой таблице. Когда вы не задаете кодирования или задаете кодирование как 'system'
, write
функционируйте использует ваше кодирование системного значения по умолчанию, чтобы записать файл.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
Пример: 'Encoding','system'
или 'Encoding',"system"
использует кодирование системного значения по умолчанию.
'Sheet'
— Целевой рабочий листЦелевой рабочий лист в виде разделенной запятой пары, состоящей из '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
'VariableCompression'
— Устелите паркетом алгоритм сжатия'snappy'
(значение по умолчанию) | 'brotli'
| 'gzip'
| 'uncompressed'
| массив ячеек из символьных векторов | представляет вектор в виде строкиУстелите паркетом алгоритм сжатия в виде одного из этих значений.
'snappy'
, 'brotli'
gzip
, или 'uncompressed'
. Если вы задаете один алгоритм сжатия затем write
сжатия все переменные с помощью того же алгоритма.
В качестве альтернативы можно задать массив ячеек из символьных векторов или вектор строки, содержащий имена алгоритмов сжатия, чтобы использовать для каждой переменной.
В общем случае 'snappy'
имеет лучшую эффективность для чтения и записи, 'gzip'
имеет более высокий коэффициент сжатия за счет большего количества времени вычислений центрального процессора и 'brotli'
обычно производит самый маленький размер файла за счет скорости сжатия.
Пример: write('C:\myData',D,'FileType','parquet','VariableCompression','brotli')
Пример: write('C:\myData', D, 'FileType', 'parquet', 'VariableCompression', {'brotli' 'snappy' 'gzip'})
'VariableEncoding'
— Имена схемы кодирования'auto'
(значение по умолчанию) | 'dictionary'
| 'plain'
| массив ячеек из символьных векторов | представляет вектор в виде строкиСхема кодирования называет в виде одного из этих значений:
'auto'
— write
использование 'plain'
кодирование для логических переменных и 'dictionary'
кодирование для всех других.
'dictionary'
, 'plain'
— Если вы задаете одну схему кодирования затем write
кодирует все переменные с той схемой.
В качестве альтернативы можно задать массив ячеек из символьных векторов или вектор строки, содержащий имена схемы кодирования, чтобы использовать для каждой переменной.
В общем случае 'dictionary'
кодирование результатов в меньших размерах файла, но 'plain'
кодирование может быть быстрее для переменных, которые не содержат много повторных значений. Если размер словаря или количество уникальных значений растут, чтобы быть слишком большими, то кодирование автоматически возвращается к простому кодированию. Для получения дополнительной информации о кодировке Паркета смотрите, что Паркет кодирует определения.
Пример: write('myData.parquet', D, 'FileType', 'parquet', 'VariableEncoding', 'plain')
Пример: write('myData.parquet', D, 'FileType', 'parquet', 'VariableEncoding', {'plain' 'dictionary' 'plain'})
'Version'
— Устелите паркетом версию, чтобы использовать
(значение по умолчанию) | '1.0'
Устелите паркетом версию, чтобы использовать в виде любого '1.0'
или '2.0'
. По умолчанию, '2.0'
предлагает самое эффективное устройство хранения данных, но можно выбрать '1.0'
для самой широкой совместимости с внешними приложениями, которые поддерживают формат Паркета.
В некоторых случаях, write(location, D, 'FileType', type)
создает файлы, которые не представляют исходный массив D
точно. Если вы используете datastore(location)
чтобы считать файлы контрольной точки, затем результат не может иметь того же формата или содержимого как исходная распределенная таблица.
Для 'text'
и 'spreadsheet'
типы файлов, write
использует эти правила:
write
выходные числовые переменные с помощью longG
формат, и категориальный, символ или строковые переменные как закрывший кавычки текст.
Для нетекстовых переменных, которые имеют больше чем один столбец, write
выходные параметры несколько разделенных от разделителя полей на каждой линии и построений подходящие заголовки столбцов для первой линии файла.
write
выходные переменные больше чем с двумя размерностями как двумерные переменные, со свернутыми последующими измерениями.
Для переменных со знаком ячейки, write
выводит содержимое каждой ячейки как одна строка, в нескольких разделенных от разделителя полях, когда содержимое является числовым, логическим, символ, или категориальным, и выводит одно пустое поле в противном случае.
Не используйте 'text'
или 'spreadsheet'
типы файлов, если необходимо записать точную контрольную точку распределенного массива.
Используйте write
функция, чтобы создать контрольные точки или снимки состояния ваших данных, как вы работаете. Эта практика позволяет вам восстанавливать распределенные массивы непосредственно из файлов на диске вместо того, чтобы повторно выполнить все команды, которые произвели распределенный массив.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.