parquetDatastore

Datastore для набора файлов Parquet

Описание

Используйте объект ParquetDatastore управлять набором файлов Parquet, где каждый отдельный файл Паркета умещается в памяти, но целый набор файлов не обязательно соответствует. Можно создать объект ParquetDatastore с помощью функции parquetDatastore, задать ее свойства, и затем импортировать и обработать функции объекта использования данных.

Создание

Синтаксис

pds = parquetDatastore(location)
pds = parquetDatastore(location,Name,Value)

Описание

пример

pds = parquetDatastore(location) создает datastore pds из набора файлов Parquet, заданного location.

пример

pds = parquetDatastore(location,Name,Value) задает дополнительные параметры и свойства для pds с помощью одного или нескольких аргументов пары "имя-значение".

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

развернуть все

Файлы или папки, включенные в datastore, заданный как путь или объект DsFileSet.

  • path Задайте путь как вектор символов, массив ячеек из символьных векторов, представьте в виде строки скаляр или массив строк, содержа местоположение файлов или папок, которые являются локальными или удаленными.

    • Локальные файлы или папки — Задают location как локальный путь к файлам или папкам. Если файлы не находятся в текущей папке, то локальный путь должен задать полные или относительные пути. Файлы в подпапках заданной папки автоматически не включены в datastore. Можно использовать подстановочный символ (*) при определении локального пути. Этот символ указывает, что datastore включает все файлы соответствия или все файлы в соответствующих папках.

    • Удаленные файлы или папки — Задают location, чтобы быть полными путями файлов или папок как интернационализировавший идентификатор ресурса (IRI) формы hdfs:///path_to_file. Для получения дополнительной информации смотрите работу с Удаленными данными.

  • Объект DsFileSet — также можно задать location как объект DsFileSet. Для получения дополнительной информации смотрите matlab.io.datastore.DsFileSet.

Когда location представляет папку, datastore включает только поддерживаемые форматы файлов и игнорирует любой другой формат. Чтобы задать пользовательский список расширений файла, чтобы включать в ваш datastore, смотрите свойство FileExtensions.

Функция parquetDatastore поддерживает формат файла .parquet.

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

Пример: '../dir/data/myfile.parquet'

Пример: {'C:\dir\data\myfile01.parquet','C:\dir\data\myfile02.parquet'}

Пример: 's3://bucketname/path_to_files/*.parquet'

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'IncludeSubfolders',true

Расширения, чтобы включать в datastore, заданный как пара, разделенная запятой, состоящая из 'FileExtensions' и вектора символов, массива ячеек из символьных векторов, представляют в виде строки скаляр или массив строк.

  • Если вы не задаете 'FileExtensions', то parquetDatastore автоматически включает все файлы с .parquet и расширениями .parq в заданном пути.

  • Если вы хотите включать файлы паркета с нестандартными расширениями файла в parquetDatastore, то задайте те расширения явным образом.

  • Если вы хотите создать parquetDatastore для файлов без каких-либо расширений, то задайте 'FileExtensions' как пустой символьный вектор, ''.

Пример: 'FileExtensions',{'.parquet','.parq'}

Пример: 'FileExtensions','.myformat'

Пример: 'FileExtensions',''

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

Флаг включения подпапки, заданный как пара, разделенная запятой, состоящая из 'IncludeSubfolders' и true или false. Задайте true, чтобы включать все файлы и подпапки в каждой папке или false, чтобы включать только файлы в каждой папке.

Если вы не задаете 'IncludeSubfolders', то значением по умолчанию является false.

Пример: 'IncludeSubfolders',true

Типы данных: logical | double

Выведите тип данных, заданный как пара, разделенная запятой, состоящая из 'OutputType' и 'auto', 'table' или 'timeable'.

  • 'auto' Возвратите таблицу или расписание. parquetDatastore обнаруживает, если вывод должен быть таблицей или расписанием на основе других пар "имя-значение", которые вы задаете. Когда вы задаете пару "имя-значение" RowTimes, parquetDatastore выводит, что вывод является расписанием.

  • Таблица Возвратите таблицу. Для получения дополнительной информации о табличном типе данных смотрите table.

  • расписание Возвратите расписание. Для получения дополнительной информации о расписаниях смотрите timetable.

Значение OutputType выбирает тип данных, возвращенный в preview, read и функции readall.

Пример: 'OutputType','timetable'

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

Альтернативные пути к корню файловой системы, заданные как пара, разделенная запятой, состоящая из 'AlternateFileSystemRoots' и вектора строки или массива ячеек. Используйте 'AlternateFileSystemRoots', когда вы создадите datastore на локальной машине, но должны будете получить доступ и обработать данные на другой машине (возможно различной операционной системы). Кроме того, когда обработка данных с помощью Parallel Computing Toolbox™ и MATLAB® Parallel Server™ и данных хранится на локальных машинах с копией доступных данных на облаке другой платформы или кластерных машинах, необходимо использовать 'AlternateFileSystemRoots', чтобы сопоставить корневые пути.

  • Чтобы сопоставить набор корневых путей, которые эквивалентны друг другу, задайте 'AlternateFileSystemRoots' как вектор строки. Например,

    ["Z:\datasets","/mynetwork/datasets"]

  • Чтобы сопоставить несколько наборов корневых путей, которые эквивалентны для datastore, задайте 'AlternateFileSystemRoots' как массив ячеек, содержащий несколько строк, где каждая строка представляет набор эквивалентных корневых путей. Задайте каждую строку в массиве ячеек или как вектор строки или как массив ячеек из символьных векторов. Например:

    • Задайте 'AlternateFileSystemRoots' как массив ячеек векторов строки.

      {["Z:\datasets", "/mynetwork/datasets"];...
       ["Y:\datasets", "/mynetwork2/datasets","S:\datasets"]}

    • Также задайте 'AlternateFileSystemRoots' как массив ячеек массива ячеек из символьных векторов.

      {{'Z:\datasets','/mynetwork/datasets'};...
       {'Y:\datasets', '/mynetwork2/datasets','S:\datasets'}}

Значение 'AlternateFileSystemRoots' должно удовлетворить эти условия:

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

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

  • Корневые пути уникальны и не являются подпапками друг друга.

  • Содержит по крайней мере одну корневую запись пути, которая указывает на местоположение файлов.

Для получения дополнительной информации смотрите Настроенный Datastore для Обработки на Различных Машинах или Кластерах.

Пример: ["Z:\datasets","/mynetwork/datasets"]

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

Свойства

развернуть все

Свойства ParquetDatastore описывают формат файлов в объекте datastore и управляют, как данные считаны из datastore. За исключением свойства Files, можно задать значение аргументов пары "имя-значение" использования свойств ParquetDatastore, когда вы создаете объект datastore. Чтобы просмотреть или изменить свойство после создания объекта, используйте запись через точку.

Файлы включали в datastore, разрешенный как массив ячеек из символьных векторов или массив строк, где каждый вектор символов или строка являются полным путем к файлу. Аргумент location задает эти файлы.

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

Пример: {'C:\dir\data\file1.ext';'C:\dir\data\file2.ext'}

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

Объем данных, чтобы читать в вызове функции read, заданной как 'rowgroup', 'file' или положительное целое число.

  • 'rowgroup' — Каждый вызов read читает количество строк, заданных в группах строки файла Паркета. Чтобы получить количество строк в группах строки, смотрите свойство RowGroupHeights объекта ParquetInfo.

  • 'file' — Каждый вызов read считывает все данные в одном файле.

  • положительное целое число — Каждый вызов read читает максимум строк ReadSize.

Когда вы изменяете ReadSize от положительного целого числа до 'file' или 'rowgroup', или наоборот, MATLAB сбрасывает datastore к непрочитанному состоянию, где никакие данные не были считаны из него.

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

Имена переменных в datastore, заданном как вектор символов, массив ячеек из символьных векторов, представляют в виде строки скаляр или массив строк. Задайте имена переменных в порядке, в котором они появляются в файлах. Если вы не задаете имена переменных, datastore обнаруживает их от первой строки незаголовка в первом файле. Можно задать VariableNames с вектором символов или представить скаляр в виде строки, однако datastore преобразовывает и хранит значение свойства к массиву ячеек из символьных векторов. При изменении свойства VariableNames количество новых имен переменных должно совпадать с количеством исходных имен переменных.

Если ReadVariableNames является false, то значения по умолчанию VariableNames к {'Var1','Var2', ...}.

Пример: {'Time','Date','Quantity'}

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

Переменные, чтобы читать из файла, заданного как массив ячеек из символьных векторов или массив строк, где каждый вектор символов или строка содержат имя одной переменной. Можно задать имена переменных в любом порядке.

Пример: {'Var3','Var7','Var4'}

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

Имя переменной времен строки в данных о Паркете, заданных как пара, разделенная запятой, состоящая из 'RowTimes' и вектора символов или массива строк, содержащего имя переменной.

RowTimes является связанным с расписанием параметром. Каждая строка расписания сопоставлена со временем, которое получено во временном векторе для расписания. Переменная, заданная в RowTimes, должна содержать datetime или вектор duration.

По умолчанию parquetDatastore использует первую переменную datetime или duration в качестве времен строки для расписания.

Функции объекта

hasdataОпределите, доступны ли данные для чтения
numpartitionsКоличество разделов datastore
partitionРазделите datastore
previewПодмножество данных в datastore
readСчитайте данные в datastore
readallСчитывайте все данные в datastore
resetСброс Datastore к начальному состоянию
transformПреобразуйте datastore
combineОбъедините данные от нескольких datastores

Примеры

свернуть все

Создайте объект ParquetDatastore, содержащий файл outages.parquet.

pds = parquetDatastore('outages.parquet')
pds = 
  ParquetDatastore with properties:

                       Files: {
                              ' .../devel/bat/BR2019ad/build/matlab/toolbox/matlab/demos/outages.parquet'
                              }
               VariableNames: {1x6 cell}
       SelectedVariableNames: {1x6 cell}
                    ReadSize: 'rowgroup'
                  OutputType: 'table'
                    RowTimes: []
    AlternateFileSystemRoots: {}

Создайте datastore для демонстрационного файла Паркета, и затем считайте данные из файла с различными значениями ReadSize.

Создайте datastore для airlinesmall.parquet, установите ReadSize на строки 10, и затем читайте из datastore. Значение ReadSize определяет, сколько строк данных читается из datastore с каждым вызовом функции read.

pds = parquetDatastore('outages.parquet','ReadSize',10);
read(pds)
ans=10×6 table
      Region            OutageTime          Loss     Customers       RestorationTime             Cause      
    ___________    ____________________    ______    __________    ____________________    _________________

    "SouthWest"    01-Feb-2002 12:18:00    458.98    1.8202e+06    07-Feb-2002 16:50:00    "winter storm"   
    "SouthEast"    23-Jan-2003 00:49:00    530.14    2.1204e+05                     NaT    "winter storm"   
    "SouthEast"    07-Feb-2003 21:15:00     289.4    1.4294e+05    17-Feb-2003 08:14:00    "winter storm"   
    "West"         06-Apr-2004 05:44:00    434.81    3.4037e+05    06-Apr-2004 06:10:00    "equipment fault"
    "MidWest"      16-Mar-2002 06:18:00    186.44    2.1275e+05    18-Mar-2002 23:23:00    "severe storm"   
    "West"         18-Jun-2003 02:49:00         0             0    18-Jun-2003 10:54:00    "attack"         
    "West"         20-Jun-2004 14:39:00    231.29           NaN    20-Jun-2004 19:16:00    "equipment fault"
    "West"         06-Jun-2002 19:28:00    311.86           NaN    07-Jun-2002 00:51:00    "equipment fault"
    "NorthEast"    16-Jul-2003 16:23:00    239.93         49434    17-Jul-2003 01:12:00    "fire"           
    "MidWest"      27-Sep-2004 11:09:00    286.72         66104    27-Sep-2004 16:37:00    "equipment fault"

Установите значение свойства ReadSize на 'file' и читайте из datastore. Каждый вызов функции read считывает все данные из datastore.

pds.ReadSize ='file'; 
data = read(pds)
data=1468×6 table
      Region            OutageTime          Loss     Customers       RestorationTime             Cause      
    ___________    ____________________    ______    __________    ____________________    _________________

    "SouthWest"    01-Feb-2002 12:18:00    458.98    1.8202e+06    07-Feb-2002 16:50:00    "winter storm"   
    "SouthEast"    23-Jan-2003 00:49:00    530.14    2.1204e+05                     NaT    "winter storm"   
    "SouthEast"    07-Feb-2003 21:15:00     289.4    1.4294e+05    17-Feb-2003 08:14:00    "winter storm"   
    "West"         06-Apr-2004 05:44:00    434.81    3.4037e+05    06-Apr-2004 06:10:00    "equipment fault"
    "MidWest"      16-Mar-2002 06:18:00    186.44    2.1275e+05    18-Mar-2002 23:23:00    "severe storm"   
    "West"         18-Jun-2003 02:49:00         0             0    18-Jun-2003 10:54:00    "attack"         
    "West"         20-Jun-2004 14:39:00    231.29           NaN    20-Jun-2004 19:16:00    "equipment fault"
    "West"         06-Jun-2002 19:28:00    311.86           NaN    07-Jun-2002 00:51:00    "equipment fault"
    "NorthEast"    16-Jul-2003 16:23:00    239.93         49434    17-Jul-2003 01:12:00    "fire"           
    "MidWest"      27-Sep-2004 11:09:00    286.72         66104    27-Sep-2004 16:37:00    "equipment fault"
    "SouthEast"    05-Sep-2004 17:48:00    73.387         36073    05-Sep-2004 20:46:00    "equipment fault"
    "West"         21-May-2004 21:45:00    159.99           NaN    22-May-2004 04:23:00    "equipment fault"
    "SouthEast"    01-Sep-2002 18:22:00    95.917         36759    01-Sep-2002 19:12:00    "severe storm"   
    "SouthEast"    27-Sep-2003 07:32:00       NaN    3.5517e+05    04-Oct-2003 07:02:00    "severe storm"   
    "West"         12-Nov-2003 06:12:00    254.09    9.2429e+05    17-Nov-2003 02:04:00    "winter storm"   
    "NorthEast"    18-Sep-2004 05:54:00         0             0                     NaT    "equipment fault"
      ⋮

Также можно установить значение свойства ReadSize к 'rowgroup'. Для получения дополнительной информации смотрите свойство ReadSize страницы ссылки на объект ParquetDatastore.

Ограничения

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

Альтернативы

Также можно создать объект ParquetDatastore с помощью функции datastore. Например, ds = datastore(location,'Type','parquet') создает datastore из набора файлов, заданных location.

Смотрите также

| | | |

Введенный в R2019a