Main Content

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:

  1. Regístrese para obtener una cuenta raíz de Amazon Web Services (AWS). Consulte Amazon Web Services: cuenta.

  2. 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.

  3. 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.

  4. 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 y AWS_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 su ubicación de Amazon S3 está autorizada para su acceso público, no necesita establecer variables de entorno ni configurar la autenticación. Para obtener más información sobre cómo configurar el acceso público, consulte Bloqueo del acceso público al almacenamiento de Amazon S3.

Amazon S3 también permite que varios usuarios accedan a una misma cuenta. Para obtener más información sobre el acceso de Amazon S3, consulte Administración de identidades y acceso (IAM) de AWS.

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. Consulte Qué es Azure para obtener más información.

Configurar acceso

Para trabajar con datos remotos en el almacenamiento de Azure, debe configurar el acceso primero:

  1. Regístrese para obtener una cuenta de Microsoft Azure y consulte Cuenta de Microsoft Azure.

  2. 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 cuenta

      Cada 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 su ubicación de almacenamiento de Azure está autorizada para su acceso público, no necesita establecer variables de entorno ni configurar la autenticación. Para obtener información sobre el acceso público al almacenamiento de Azure, consulte Configurar el acceso público anónimo de lectura.

El almacenamiento de Azure también permite que varios usuarios accedan a una misma cuenta. Para obtener más información sobre la gestión de varios usuarios, consulte la guía de referencia de operaciones de administración de acceso e identidades 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 y HADOOP_PREFIX, establezca el entorno de variable MATLAB_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

| | | | | | | |

Temas relacionados