exponenta event banner

parquetwrite

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

Описание

пример

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

пример

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

Примеры

свернуть все

Запись табличных данных в паркетный файл и сравнение размера тех же табличных данных в .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

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

свернуть все

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

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

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

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

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

Внимание

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

Ограничения

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

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