parquetwrite

Запись столбцовых данных в файл Parquet

Описание

пример

parquetwrite(filename,T) записывает таблицу или расписание T в файл Parquet 2.0 с именем файла, заданным в filename.

пример

parquetwrite(filename,T,Name,Value) задает дополнительные опции с одним или несколькими аргументами пары "имя-значение". Для примера можно задать 'VariableCompression' для изменения используемого алгоритма сжатия или 'Version' для записи данных в файл Parquet 1.0.

Примеры

свернуть все

Запишите табличные данные в файл Parquet и сравните размер тех же табличных данных в .csv и .parquet форматы файлов.

Считайте табличные данные из файла outages.csv в таблицу.

T = readtable('outages.csv');

Запись данных в формат файла Parquet. По умолчанию в parquetwrite функция использует Snappy схема сжатия. Для задания других схем сжатия смотрите 'VariableCompression' Пара "имя-значение".

parquetwrite('outagesDefault.parquet',T)

Получите размеры файлов и вычислите отношение размера табличных данных в .csv формат для размера тех же данных в .parquet формат.

Получите размер .csv файл.

fcsv = dir(which('outages.csv'));
size_csv = fcsv.bytes
size_csv = 101040

Получите размер .parquet файл.

fparquet  = dir('outagesDefault.parquet');
size_parquet = fparquet.bytes
size_parquet = 44881

Вычислите коэффициент.

sizeRatio = ( size_parquet/size_csv )*100 ;
disp(['Size Ratio = ', num2str(sizeRatio) '% of original size'])
Size Ratio = 44.419% of original size

Входные параметры

свернуть все

Имя выходного файла Parquet, заданное как вектор символов или строковый скаляр.

В зависимости от места, в котором вы пишете, filename может принять одну из этих форм.

Местоположение

Форма

Текущая папка

Чтобы записать в текущую папку, укажите имя файла в filename.

Пример: 'myData.parquet'

Другие папки

Чтобы записать в папку, отличную от текущей папки, укажите полное или относительное имя пути в filename.

Пример: 'C:\myFolder\myData.parquet'

Пример: 'dataDir\myData.parquet'

Удаленное местоположение

Чтобы записать в удаленное место, filename должен содержать полный путь к файлу, заданному в качестве равномерного указателя ресурса (URL) формы:

scheme_name://path_to_file/ myData.parquet

Исходя из удаленного местоположения, scheme_name может быть одним из значений в этой таблице.

Удаленное местоположениеscheme_name
Амазонки S3™s3
Windows Azure® Хранилище больших двоичных объектовwasb, wasbs
HDFS™hdfs

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

Пример: 's3://bucketname/path_to_file/myData.parquet'

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

Входные данные, заданные как таблица или расписание.

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

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

Пример: parquetwrite(filename,T,'VariableCompression','gzip','Version','1.0')

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

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

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

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

Пример: parquetwrite('myData.parquet', T, 'VariableCompression', 'brotli')

Пример: parquetwrite('myData.parquet', T, 'VariableCompression', {'brotli' 'snappy' 'gzip'})

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

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

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

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

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

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

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

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

Внимание

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

Ограничения

В некоторых случаях parquetwrite создает файлы, которые не представляют исходный массив T точно. Если вы используете parquetread или datastore чтобы считать файлы, результат может иметь не тот формат или содержимое, что и исходная таблица. Для получения дополнительной информации смотрите Apache Parquet Data Type Отображений.

Введенный в R2019a