Данные можно считывать и записывать из удаленного местоположения с помощью функций и объектов MATLAB ®, таких как файловые функции ввода-вывода и некоторые объекты хранилища данных. В этих примерах показано, как настраивать, считывать и записывать данные в удаленные местоположения на следующих облачных платформах хранения:
Amazon S3™ (простая служба хранения данных)
Azure ® Blob Storage (ранее называлось Windows Azure ® Storage Blob (WASB ))
Распределенная файловая система Hadoop ® (HDFS™)
MATLAB позволяет использовать Amazon S3 в качестве веб-службы для хранения файлов, предлагаемой Amazon Web Services. При указании расположения данных необходимо указать полный путь к файлам или папкам с помощью унифицированного указателя ресурса (URL) формы
s3://bucketname/path_to_file
bucketname - имя контейнера и path_to_file - путь к файлу или папкам.
Amazon S3 обеспечивает хранение данных через интерфейсы веб-служб. Вы можете использовать ведро в качестве контейнера для хранения объектов в Amazon S3.
Для работы с удаленными данными в Amazon S3 необходимо сначала настроить доступ:
Зарегистрируйтесь для получения корневой учетной записи Amazon Web Services (AWS). См. раздел Веб-службы Amazon: Учетная запись.
С помощью корневой учетной записи AWS создайте пользователя IAM (Identity and Access Management). См. раздел Создание пользователя IAM в учетной записи AWS.
Создание ключа доступа для получения идентификатора ключа доступа и секретного ключа доступа. См. раздел Управление ключами доступа для пользователей IAM.
Сконфигурируйте компьютер с идентификатором ключа доступа AWS, секретным ключом доступа и регионом с помощью инструмента интерфейса командной строки AWS от https://aws.amazon.com/cli/. Кроме того, можно задать переменные среды непосредственно с помощью setenv:
AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY - Аутентификация и включение использования служб Amazon S3. (Эта пара ключевых переменных доступа была создана на шаге 3.)
AWS_DEFAULT_REGION (необязательно) - выберите географическую область сегмента. Значение этой переменной среды обычно определяется автоматически, но владельцу сегмента может потребоваться установить его вручную.
AWS_SESSION_TOKEN (необязательно) - укажите маркер сеанса, если вы используете временные учетные данные безопасности, например, для федеративной аутентификации AWS ®.
При использовании Parallel Computing Toolbox™ необходимо убедиться, что кластер настроен на доступ к S3 службам. Можно скопировать переменные среды клиента в работников кластера, задав параметр EnvironmentVariables в parpool, batch, createJobили в диспетчере профилей кластера.
В следующем примере показано, как использовать ImageDatastore объект для чтения указанного изображения из Amazon S3, а затем отображения изображения на экран.
setenv('AWS_ACCESS_KEY_ID', 'YOUR_AWS_ACCESS_KEY_ID');
setenv('AWS_SECRET_ACCESS_KEY', 'YOUR_AWS_SECRET_ACCESS_KEY');
ds = imageDatastore('s3://bucketname/image_datastore/jpegfiles', ...
'IncludeSubfolders', true, 'LabelSource', 'foldernames');
img = ds.readimage(1);
imshow(img)
В следующем примере показано, как использовать tabularTextDatastore объект для чтения табличных данных из S3 Amazon в массив высокого уровня, предварительной обработки, удаления отсутствующих записей и сортировки, а затем записи обратно в S3 Amazon.
setenv('AWS_ACCESS_KEY_ID', 'YOUR_AWS_ACCESS_KEY_ID');
setenv('AWS_SECRET_ACCESS_KEY', 'YOUR_AWS_SECRET_ACCESS_KEY');
ds = tabularTextDatastore('s3://bucketname/dataset/airlinesmall.csv', ...
'TreatAsMissing', 'NA', 'SelectedVariableNames', {'ArrDelay'});
tt = tall(ds);
tt = sortrows(rmmissing(tt));
write('s3://bucketname/preprocessedData/',tt);
Чтобы прочитать ваши высокие данные обратно, используйте datastore функция.
ds = datastore('s3://bucketname/preprocessedData/');
tt = tall(ds);
MATLAB позволяет использовать Azure Blob Storage для оперативного хранения файлов. При указании расположения данных необходимо указать полный путь к файлам или папкам с помощью унифицированного указателя ресурса (URL) формы
wasbs://container@account/path_to_file/file.ext
container@account - имя контейнера и path_to_file - путь к файлу или папкам.
Azure обеспечивает хранение данных через интерфейсы веб-сервисов. Для хранения файлов данных в Azure можно использовать большой двоичный объект. Дополнительные сведения см. в разделе Введение в Azure.
Для работы с удаленными данными в хранилище Azure необходимо сначала настроить доступ:
Зарегистрируйтесь для получения учетной записи Microsoft Azure, см. раздел Учетная запись Microsoft Azure.
Настройте сведения о проверке подлинности, задав одну из двух следующих переменных среды с помощью setenv:
MW_WASB_SAS_TOKEN - Аутентификация с помощью сигнатуры общего доступа (SAS)
Получение SAS. Дополнительные сведения см. в разделе «Получение SAS для контейнера больших двоичных объектов» в разделе Управление ресурсами хранилища больших двоичных объектов Azure с помощью проводника хранилища.
В MATLAB, установка MW_WASB_SAS_TOKEN в строку запроса SAS. Например,
setenv MW_WASB_SAS_TOKEN '?st=2017-04-11T09%3A45%3A00Z&se=2017-05-12T09%3A45%3A00Z&sp=rl&sv=2015-12-11&sr=c&sig=E12eH4cRCLilp3Tw%2BArdYYR8RruMW45WBXhWpMzSRCE%3D'
Необходимо задать для этой строки допустимый маркер SAS, созданный с помощью веб-интерфейса пользователя или проводника Azure Storage.
MW_WASB_SECRET_KEY - Аутентификация с помощью одного из двух секретных ключей Пользователя
Каждая учетная запись хранилища имеет два секретных ключа, разрешающих доступ к привилегиям администратора. Этот же доступ может быть предоставлен MATLAB без необходимости создания маркера SAS путем установки MW_WASB_SECRET_KEY переменная среды. Например:
setenv MW_WASB_SECRET_KEY '1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF'
При использовании панели инструментов параллельных вычислений необходимо скопировать переменные среды клиента для работников в кластере путем установки EnvironmentVariables в parpool, batch, createJobили в диспетчере профилей кластера.
Дополнительные сведения см. в разделе Использование хранилища Azure с кластерами Azure HDInsight.
Чтобы считать данные из хранилища больших двоичных объектов Azure, укажите расположение с помощью следующего синтаксиса:
wasbs://container@account/path_to_file/file.ext
container@account - имя контейнера и path_to_file - путь к файлу или папкам.
Например, при наличии файла airlinesmall.csv в папке /airline в учетной записи тестового хранилища wasbs://blobContainer@storageAccount.blob.core.windows.net/, затем можно создать хранилище данных с помощью:
location = 'wasbs://blobContainer@storageAccount.blob.core.windows.net/airline/airlinesmall.csv';
ds = tabularTextDatastore(location, 'TreatAsMissing', 'NA', ...
'SelectedVariableNames', {'ArrDelay'});Можно использовать Azure для поддержки всех хранилищ данных вычислений, включая прямое чтение, mapreduce, высокие массивы и глубокое обучение. Например, создайте ImageDatastore прочтите указанное изображение из хранилища данных, а затем отобразите изображение на экране.
setenv('MW_WASB_SAS_TOKEN', 'YOUR_WASB_SAS_TOKEN');
ds = imageDatastore('wasbs://YourContainer@YourAccount.blob.core.windows.net/', ...
'IncludeSubfolders', true, 'LabelSource', 'foldernames');
img = ds.readimage(1);
imshow(img)В этом примере показано, как считывать табличные данные из Azure в массив высокого уровня с помощью tabularTextDatastore выполните предварительную обработку, удалив отсутствующие записи и сортировку, а затем запишите их обратно в Azure.
setenv('MW_WASB_SAS_TOKEN', 'YOUR_WASB_SAS_TOKEN');
ds = tabularTextDatastore('wasbs://YourContainer@YourAccount.blob.core.windows.net/dataset/airlinesmall.csv', ...
'TreatAsMissing', 'NA', 'SelectedVariableNames', {'ArrDelay'});
tt = tall(ds);
tt = sortrows(rmmissing(tt));
write('wasbs://YourContainer@YourAccount.blob.core.windows.net/preprocessedData/',tt);Чтобы прочитать ваши высокие данные обратно, используйте datastore функция.
ds = datastore('wasbs://YourContainer@YourAccount.blob.core.windows.net/preprocessedData/');
tt = tall(ds);
MATLAB позволяет использовать распределенную файловую систему Hadoop (HDFS) в качестве веб-службы для хранения файлов. При указании расположения данных необходимо указать полный путь к файлам или папкам, используя унифицированный URL-адрес одной из следующих форм:
hdfs:/path_to_file
hdfs:///path_to_file
hdfs://hostname/path_to_file
hostname является именем хоста или сервера и path_to_file - путь к файлу или папкам. Указание hostname является необязательным. Если не указать hostname, Hadoop использует имя хоста по умолчанию, связанное с установкой распределенной файловой системы Hadoop (HDFS) в MATLAB.
Например, можно использовать любую из этих команд для создания хранилища данных для файла. file1.txt, в папке с именем data расположен на хосте с именем myserver:
ds = tabularTextDatastore('hdfs:///data/file1.txt') ds = tabularTextDatastore('hdfs://myserver/data/file1.txt')
Если hostname указывается, он должен соответствовать именоду, определенному fs.default.name в XML-файлах конфигурации Hadoop для кластера Hadoop.
При необходимости можно указать номер порта. Например, в этом расположении указывается хост с именем myserver с портом 7867, содержащий файл file1.txt в папке с именем data:
'hdfs://myserver:7867/data/file1.txt'
Указанный номер порта должен соответствовать номеру порта, заданному в конфигурации HDFS.
Перед чтением из HDFS используйте setenv для установки соответствующей переменной среды в папку, в которой установлен Hadoop. Эта папка должна быть доступна с текущего компьютера.
Только Hadoop v1 - установка HADOOP_HOME переменная среды.
Только Hadoop v2 - установка HADOOP_PREFIX переменная среды.
Если вы работаете как с Hadoop v1, так и с Hadoop v2, или если HADOOP_HOME и HADOOP_PREFIX переменные среды не установлены, затем установите MATLAB_HADOOP_INSTALL переменная среды.
Например, эта команда используется для установки HADOOP_HOME переменная среды. hadoop-folder - папка, в которой установлен Hadoop, и /mypath/ - путь к этой папке.
setenv('HADOOP_HOME','/mypath/hadoop-folder');Если текущий компьютер имеет доступ к данным HDFS на Hortonworks или Cloudera ®, то не нужно устанавливать HADOOP_HOME или HADOOP_PREFIX переменные среды. MATLAB автоматически назначает эти переменные среды при использовании граничных узлов приложений Hortonworks или Cloudera.
При чтении из HDFS или при локальном чтении файлов Sequence datastore функция вызывает javaaddpath команда. Эта команда выполняет следующие действия:
Очистка определений всех классов Java ®, определенных файлами в динамическом пути к классам
Удаление всех глобальных переменных и переменных из базовой рабочей области
Удаляет все скомпилированные сценарии, функции и MEX-функции из памяти
Чтобы предотвратить удаление постоянных переменных, файлов кода или MEX-файлов, используйте mlock функция.
В этом примере показано, как использовать tabularTextDatastore объект для записи данных в расположение HDFS. Используйте write функция для записи высоких и распределенных массивов в распределенную файловую систему Hadoop. При вызове этой функции в распределенном или высоком массиве необходимо указать полный путь к папке HDFS. В следующем примере показано, как считывать табличные данные из HDFS в массив высокого уровня, предварительно обрабатывать их путем удаления отсутствующих записей и сортировки, а затем записывать обратно в HDFS.
ds = tabularTextDatastore('hdfs://myserver/some/path/dataset/airlinesmall.csv', ...
'TreatAsMissing', 'NA', 'SelectedVariableNames', {'ArrDelay'});
tt = tall(ds);
tt = sortrows(rmmissing(tt));
write('hdfs://myserver/some/path/preprocessedData/',tt);
Чтобы прочитать ваши высокие данные обратно, используйте datastore функция.
ds = datastore('hdfs://myserver/some/path/preprocessedData/');
tt = tall(ds);
datastore | imageDatastore | imread | imshow | javaaddpath | mlock | setenv | tabularTextDatastore | write