Trabajar con datos remotos
Puede leer y escribir datos desde una ubicación remota con las funciones y los objetos de MATLAB®, como las funciones de E/S de archivos y algunos objetos del almacén. Estos ejemplos muestran cómo configurar, leer y escribir en ubicaciones remotas en las siguientes plataformas de almacenamiento en la nube:
Amazon S3™ (Simple Storage Service)
Azure® Blob Storage (anteriormente conocido como Windows Azure® Storage Blob [WASB])
Sistema de archivos distribuido Hadoop® (HDFS™)
Amazon S3
MATLAB le permite utilizar Amazon S3 como servicio web de almacenamiento de archivos online ofrecido por Amazon Web Services. Cuando especifique la ubicación de los datos, debe especificar la ruta completa a los archivos o las carpetas mediante un localizador uniforme de recursos (URL) con el formato
s3://bucketname/path_to_file
bucketname
es el nombre del contenedor y path_to_file
es la ruta al archivo o a las carpetas.
Amazon S3 proporciona almacenamiento de datos a través de interfaces de servicios web. Puede utilizar un bucket como contenedor para almacenar objetos en Amazon S3.
Configurar acceso
Para trabajar con datos remotos en Amazon S3, debe configurar el acceso primero:
Regístrese para obtener una cuenta raíz de Amazon Web Services (AWS). Consulte Amazon Web Services: cuenta.
Con su cuenta raíz de AWS, cree un usuario de IAM (Administración de identidades y accesos). Consulte Creación de un usuario de IAM en su cuenta de AWS.
Genere una clave de acceso para recibir un ID de clave de acceso y una clave de acceso secreta. Consulte Administración de las claves de acceso de los usuarios de IAM.
Configure el equipo con el ID de clave de acceso de AWS, la clave de acceso secreta y la región mediante la interfaz de línea de comandos de AWS desde https://aws.amazon.com/cli/. De forma alternativa, configure directamente las variables de entorno mediante
setenv
:AWS_ACCESS_KEY_ID
yAWS_SECRET_ACCESS_KEY
: autentique y permita el uso de los servicios de Amazon S3 (generó este par de variables de clave de acceso en el paso 3).AWS_DEFAULT_REGION
(opcional): seleccione la región geográfica del bucket. El valor de esta variable de entorno se suele determinar automáticamente, pero el propietario del bucket puede necesitar que lo configure manualmente.AWS_SESSION_TOKEN
(opcional): especifique el token de sesión si utiliza credenciales de seguridad temporales, como con la autenticación federada de AWS®.
Si ha autorizado el acceso público a su ubicación Amazon S3, no tendrá que establecer variables de entorno ni configurar la autenticación. Para obtener más información sobre cómo configurar el acceso público, consulte Bloquear el acceso público a su almacenamiento de Amazon S3.
Amazon S3 también permite que varios usuarios accedan a una cuenta. Para obtener más información acerca del acceso a Amazon S3, consulte AWS Identity and Access Management (IAM).
Si utiliza Parallel Computing Toolbox™, debe asegurarse de que el cluster se haya configurado para acceder a los servicios de S3. Puede copiar las variables del entorno de cliente en los workers de un cluster estableciendo EnvironmentVariables
en parpool
, batch
, createJob
o en el Administrador de perfiles de cluster.
Leer datos de Amazon S3
El siguiente ejemplo muestra cómo usar un objeto de ImageDatastore
para leer una imagen específica de Amazon S3 y luego mostrar la imagen en la pantalla.
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)
Escribir datos en Amazon S3
El siguiente ejemplo muestra cómo usar un objeto de tabularTextDatastore
para leer datos tabulares de Amazon S3 en un arreglo alto, preprocesarlos eliminando las entradas ausentes y clasificándolos, y luego volver a escribirlos en 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);
Para volver a leer los datos altos, utilice la función datastore
.
ds = datastore('s3://bucketname/preprocessedData/'); tt = tall(ds);
Azure Blob Storage
MATLAB le permite utilizar Azure Blob Storage para el almacenamiento de archivos online. Cuando especifique la ubicación de los datos, debe especificar la ruta completa a los archivos o las carpetas mediante un localizador uniforme de recursos (URL) con el formato
wasbs://container@account/path_to_file/file.ext
container@account
es el nombre del contenedor y path_to_file
es la ruta al archivo o a las carpetas.
Azure proporciona almacenamiento de datos a través de interfaces de servicios web. Puede utilizar un blob para almacenar archivos de datos en Azure. Para obtener más información, consulte ¿Qué es Azure?.
Configurar acceso
Para trabajar con datos remotos en el almacenamiento de Azure, debe configurar el acceso primero:
Regístrese para obtener una cuenta de Microsoft Azure y consulte Cuenta de Microsoft Azure.
Defina sus credenciales de autenticación estableciendo exactamente una de las siguientes variables de entorno mediante
setenv
:MW_WASB_SAS_TOKEN
: autenticación mediante firma de acceso compartido (SAS)Obtenga una SAS. Para obtener información, consulte la sección «Obtención de la SAS para un contenedor de blobs» en Administración de recursos de Azure Blob Storage con el Explorador de Storage.
En MATLAB, establezca
MW_WASB_SAS_TOKEN
en la cadena de consulta de SAS. Por ejemplo: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'
Debe establecer esta cadena como token de SAS válido generado desde la interfaz de usuario web o el Explorador de Azure Storage.
MW_WASB_SECRET_KEY
: autenticación mediante una de las dos claves secretas de la cuentaCada cuenta de Storage tiene dos claves secretas que permiten el acceso a privilegios administrativos. Este mismo acceso se puede conceder a MATLAB sin tener que crear un token de SAS estableciendo la variable de entorno
MW_WASB_SECRET_KEY
. Por ejemplo:setenv MW_WASB_SECRET_KEY '1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF'
Si ha autorizado el acceso público a su ubicación de almacenamiento Azure, no tendrá que establecer variables de entorno ni configurar la autenticación. Para obtener más información sobre el acceso público al sistema de almacenamiento Azure, consulte Configuración de acceso de lectura público anónimo.
El sistema de almacenamiento Azure también permite que varios usuarios accedan a una misma cuenta. Para obtener más información sobre cómo administrar varios usuarios, consulte Guía de referencia de operaciones de administración de identidad y acceso de Azure Active Directory.
Si utiliza Parallel Computing Toolbox, debe copiar las variables del entorno de cliente en los workers de un cluster estableciendo EnvironmentVariables
en parpool
, batch
, createJob
o en el Administrador de perfiles de cluster.
Para obtener más información, consulte Uso de Azure Storage con clusters de Azure HDInsight.
Leer datos de Azure
Para leer datos de una ubicación de Azure Blob Storage, especifique la ubicación con la siguiente sintaxis:
wasbs://container@account/path_to_file/file.ext
container@account
es el nombre del contenedor y path_to_file
es la ruta al archivo o a las carpetas.
Por ejemplo, si tiene un archivo airlinesmall.csv
en una carpeta /airline
en una cuenta de almacenamiento de prueba wasbs://blobContainer@storageAccount.blob.core.windows.net/
, puede crear un almacén de datos mediante:
location = 'wasbs://blobContainer@storageAccount.blob.core.windows.net/airline/airlinesmall.csv';
ds = tabularTextDatastore(location, 'TreatAsMissing', 'NA', ... 'SelectedVariableNames', {'ArrDelay'});
Puede utilizar Azure para todos los cálculos que los almacenes de datos admiten, como la lectura directa, mapreduce
, los arreglos altos y deep learning. Por ejemplo, cree un objeto ImageDatastore
, lea una imagen específica del almacén de datos y luego muestre la imagen en la pantalla.
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)
Escribir datos en Azure
Este ejemplo muestra cómo leer datos tabulares de Azure en un arreglo alto con un objeto tabularTextDatastore
, preprocesarlos eliminando las entradas ausentes y clasificándolos, y luego volver a escribirlos en 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);
Para volver a leer los datos altos, utilice la función datastore
.
ds = datastore('wasbs://YourContainer@YourAccount.blob.core.windows.net/preprocessedData/'); tt = tall(ds);
Sistema de archivos distribuido Hadoop
Especificar la ubicación de los datos
MATLAB le permite utilizar el sistema de archivos distribuido de Hadoop (HDFS) como servicio web de almacenamiento de archivos online. Cuando especifique la ubicación de los datos, debe especificar la ruta completa a los archivos o las carpetas mediante un localizador uniforme de recursos (URL) con uno de los siguientes formatos:
hdfs:/path_to_file
hdfs:///path_to_file
hdfs://hostname/path_to_file
hostname
es el nombre del host o servidor y path_to_file
es la ruta al archivo o a las carpetas. Especificar el hostname
es opcional. Si no se especifica el hostname
, Hadoop utiliza el nombre de host predeterminado asociado a la instalación del sistema de archivos distribuido Hadoop (HDFS) en MATLAB.
Por ejemplo, puede usar estos comandos para crear un almacén de datos para el archivo, file1.txt
, en una carpeta llamada data
que se encuentra en un host denominado myserver
:
ds = tabularTextDatastore('hdfs:///data/file1.txt')
ds = tabularTextDatastore('hdfs://myserver/data/file1.txt')
Si se especifica el hostname
, debe corresponderse con el namenode definido por la propiedad fs.default.name
en los archivos de configuración XML de Hadoop del cluster de Hadoop.
De forma opcional, puede incluir el número de puerto. Por ejemplo, esta ubicación especifica un host denominado myserver
con el puerto 7867
, que contiene el archivo file1.txt
en una carpeta denominada data
:
'hdfs://myserver:7867/data/file1.txt'
El número de puerto especificado debe coincidir con el número de puerto establecido en la configuración de HDFS.
Establecer una variable de entorno de Hadoop
Antes de leer desde HDFS, utilice la función setenv
para establecer la variable de entorno correspondiente para la carpeta donde se haya instalado Hadoop. Se debe poder acceder a esta carpeta desde el equipo actual.
Hadoop v1 solo: establezca la variable de entorno
HADOOP_HOME
.Hadoop v2 solo: establezca la variable de entorno
HADOOP_PREFIX
.Si trabaja tanto con Hadoop v1 como con Hadoop v2 o si no se establecen las variables de entorno
HADOOP_HOME
yHADOOP_PREFIX
, establezca el entorno de variableMATLAB_HADOOP_INSTALL
.
Por ejemplo, utilice este comando para establecer la variable de entorno HADOOP_HOME
. hadoop-folder
es la carpeta en la que se ha instalado Hadoop y /mypath/
es la ruta a dicha carpeta.
setenv('HADOOP_HOME','/mypath/hadoop-folder');
Datos HDFS en Hortonworks o CLOUDERA
Si el equipo actual tiene acceso a datos HDFS en Hortonworks o CLOUDERA®, no tiene que establecer las variables de entorno HADOOP_HOME
o HADOOP_PREFIX
. MATLAB asigna automáticamente estas variables de entorno al utilizar los nodos perimetrales de aplicaciones de Hortonworks o CLOUDERA.
Evitar la eliminación de código de la memoria
Al leer desde HDFS o leer archivos de secuencia localmente, la función datastore
llama al comando javaaddpath
. Este comando hace lo siguiente:
Elimina las definiciones de todas las clases de Java® definidas por archivos en una ruta de clase dinámica
Elimina todas las variables y variables globales del espacio de trabajo base
Elimina todos los scripts, las funciones y las funciones MEX recopiladas de la memoria
Para evitar que se eliminen las variables, los archivos de código o los archivos MEX persistentes, utilice la función mlock
.
Escribir datos en HDFS
Este ejemplo muestra cómo utilizar un objeto tabularTextDatastore
para escribir datos en una ubicación de HDFS. Utilice la función write
para escribir los arreglos altos y distribuidos en un sistema de archivos distribuido Hadoop. Al llamar a esta función en un arreglo alto o distribuido, debe especificar la ruta completa a una carpeta HDFS. El siguiente ejemplo muestra cómo leer datos tabulares de HDFS en un arreglo alto, preprocesarlos eliminando las entradas ausentes y clasificándolos, y luego volver a escribirlos en 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);
Para volver a leer los datos altos, utilice la función datastore
.
ds = datastore('hdfs://myserver/some/path/preprocessedData/'); tt = tall(ds);
Consulte también
datastore
| tabularTextDatastore
| write
| imageDatastore
| imread
| imshow
| javaaddpath
| mlock
| setenv
Temas relacionados
- Read and Analyze Hadoop Sequence File
- Work with Deep Learning Data in AWS (Deep Learning Toolbox)