Считывать и записывать данные из удаленного местоположения можно с помощью MATLAB® функции и объекты, такие как файловые функции ввода-вывода и некоторые объекты datastore. В этих примерах показано, как настроить, прочитать и записать в удаленные местоположения на следующих облачных платформах хранения данных:
Amazon S3™ (Простой Сервис Хранения)
Голубой® Хранилище больших двоичных объектов (ранее известное как Windows Azure® Больших двоичных объектов (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 Web Services: Учетная запись.
Используя корневую учетную запись AWS, создайте пользователя IAM (Identity and Access Management). См. раздел Создание пользователя IAM в учетной записи AWS.
Сгенерируйте ключ доступа для получения идентификатора ключа доступа и секретного ключа доступа. См. раздел Управление ключами доступа для пользователей IAM.
Сконфигурируйте машину с идентификатором ключа доступа AWS, ключом секретного доступа и областью с помощью инструмента Командная Строка Interface из 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
объект, чтобы считать табличные данные из Amazon S3 в длинный массив, обработать его путем удаления недостающих записей и сортировки, а затем записать обратно в Amazon S3.
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
- Аутентификация через подписанный URL-адрес (SAS)
Получите SAS. Для получения дополнительной информации см. раздел «Получите SAS для контейнера больших двоичных объектов» в разделе «Управление ресурсами хранения больших двоичных объектов Azure с помощью Storage Explorer».
В 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 или Explorer.
MW_WASB_SECRET_KEY
- Аутентификация через один из двух секретных ключей Пользователя
У каждой учетной записи хранилища есть два секретных ключа, обеспечивающих доступ к административным привилегиям. Этот же доступ может быть предоставлен MATLAB без необходимости создания лексемы SAS путем установки MW_WASB_SECRET_KEY
переменная окружения. Для примера:
setenv MW_WASB_SECRET_KEY '1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF'
Если вы используете Parallel Computing Toolbox, необходимо скопировать переменные клиентского окружения в рабочие файлы кластера путем установки EnvironmentVariables
в parpool
, batch
, createJob
, или в диспетчере профилей кластеров.
Для получения дополнительной информации смотрите Использовать хранилище Azure с кластерами Azure HDInsight.
Чтобы считать данные из места хранения данных Azure Blob, укажите местоположение используя следующий синтаксис:
wasbs://container@account/path_to_file/file.ext
container@account
- имя контейнера и path_to_file
- путь к файлу или папкам.
Для примера, если у вас есть файл airlinesmall.csv
в папке /airline
на тестовой учетной записи хранилища wasbs://blobContainer@storageAccount.blob.core.windows.net/
, затем можно создать datastore при помощи:
location = 'wasbs://blobContainer@storageAccount.blob.core.windows.net/airline/airlinesmall.csv';
ds = tabularTextDatastore(location, 'TreatAsMissing', 'NA', ... 'SelectedVariableNames', {'ArrDelay'});
Вы можете использовать Azure для всех вычислений поддержки хранилищ данных, включая прямое чтение, mapreduce
, длинные массивы и глубокое обучение. Для примера создайте ImageDatastore
объект, считайте указанное изображение из datastore, а затем отобразите изображение на экране.
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 Distributed File System (HDFS) в качестве веб-сервиса хранения файлов. Когда вы задаете местоположение данных, необходимо задать полный путь к файлам или папкам с помощью единого локатора ресурсов (URL) одной из следующих форм:
hdfs:/path_to_file
hdfs:///path_to_file
hdfs://hostname/path_to_file
hostname
- имя узла или сервера и path_to_file
- путь к файлу или папкам. Определение hostname
опционально. Когда вы не задаете hostname
, Hadoop использует имя хоста по умолчанию, сопоставленное с установкой Hadoop Distributed File System (HDFS) в MATLAB.
Например, можно использовать любую из этих команд для создания datastore для файла, 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