主要内容

使用远程数据

您可以使用MATLAB从远程位置读取和写入数据®函数和对象,例如文件I/O函数和一些数据存储对象。这些示例展示了如何在以下云存储平台上设置、读取和写入远程位置:

  • Amazon S3™(简单存储服务)

  • Azure®Blob存储(以前称为Windows Azure®存储块(WASB)

  • Hadoop®分布式文件系统(HDFS™)

Amazon S3

MATLAB允许您使用Amazon S3作为Amazon web Services提供的在线文件存储web服务。在指定数据位置时,必须使用表单的统一资源定位符(URL)指定文件或文件夹的完整路径

s3: / /bucketname/path_to_file

bucketname集装箱名称和path_to_file文件或文件夹的路径。

Amazon S3通过web服务接口提供数据存储。你可以使用作为容器在Amazon S3中存储对象。

设置访问权限

要在Amazon S3中使用远程数据,必须首先设置访问:

  1. 注册一个Amazon Web Services (AWS)根帐户。看到Amazon Web Services:帐户

  2. 使用您的AWS根帐户,创建一个IAM(身份和访问管理)用户。看到在AWS帐户中创建IAM用户

  3. 生成一个访问密钥以接收一个访问密钥ID和一个秘密访问密钥。看到管理IAM用户的访问密钥

  4. 使用AWS命令行接口工具使用AWS访问密钥ID、秘密访问密钥和区域配置您的计算机https://aws.amazon.com/cli/.或者直接使用setenv

    • AWS_ACCESS_KEY_ID而且AWS_SECRET_ACCESS_KEY—对Amazon S3服务进行鉴权和启用。(您在步骤3中生成了这对访问密钥变量。)

    • AWS_DEFAULT_REGION(可选)-选择bucket的地理区域。这个环境变量的值通常是自动确定的,但是桶的所有者可能要求您手动设置它。

    • AWS_SESSION_TOKEN(可选)—如果使用临时安全凭据,例如AWS,请指定会话令牌®联合身份验证。

如果您正在使用并行计算工具箱™,则必须确保集群已配置为访问S3服务。您可以通过设置将客户端环境变量复制到集群上的workerEnvironmentVariablesparpool批处理createJob,或在集群配置文件管理器中。

读取数据Amazon S3

下面的示例显示如何使用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',…' inclesubfolders ', true, 'LabelSource', 'foldernames');Img = ds.readimage(1);imshow (img)

数据写入Amazon S3

下面的示例显示如何使用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/ airlinsmall .csv',…'TreatAsMissing', 'NA', 'SelectedVariableNames', {'ArrDelay'});Tt =高(ds);Tt = sortrows(rmmissing(Tt));写(“s3: / / bucketname / preprocessedData /”,tt);

要读回大数据,请使用数据存储函数。

ds = datastore('s3://bucketname/preprocessedData/');Tt =高(ds);

AzureBlob存储

MATLAB允许您使用Azure Blob Storage进行在线文件存储。在指定数据位置时,必须使用表单的统一资源定位符(URL)指定文件或文件夹的完整路径

wasbs: / /container@account/path_to_file/file.ext

container@account集装箱名称和path_to_file文件或文件夹的路径。

Azure通过web服务接口提供数据存储。你可以使用在Azure中存储数据文件。看到介绍Azure获取更多信息。

设置访问权限

要在Azure存储中使用远程数据,必须首先设置访问权限:

  1. 注册Microsoft Azure帐户,请参见微软Azure帐户

  2. 通过使用设置以下两个环境变量之一来设置您的身份验证详细信息setenv

    • MW_WASB_SAS_TOKEN—通过SAS (Shared Access Signature)进行身份验证

      获取SAS。详细信息请参见中“获取一个blob容器的SAS”章节使用存储资源管理器管理Azure Blob存储资源

      在MATLAB中,MW_WASB_SAS_TOKEN到SAS查询字符串。例如,

      setenv MW_WASB_SAS_TOKEN '?圣= 2017 - 04 - 11 - t09 % 3 a45 % 3 a00z&se = 2017 - 05 - 12 - t09 % 3 a45 % 3 a00z&sp = rl&sv = 2015 - 12 - 11 - sr = c&sig = E12eH4cRCLilp3Tw % 2 bardyyr8rrumw45wbxhwpmzsrce % 3 d '

      必须将此字符串设置为从Azure Storage web UI或Explorer生成的有效SAS令牌。

    • MW_WASB_SECRET_KEY-通过帐户的两个密钥之一进行身份验证

      每个存储帐户都有两个允许管理权限访问的密钥。可以将相同的访问权限授予MATLAB,而无需通过设置MW_WASB_SECRET_KEY环境变量。例如:

      setenv MW_WASB_SECRET_KEY '1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF'

如果您正在使用并行计算工具箱,则必须通过设置将客户端环境变量复制到集群上的工作者EnvironmentVariablesparpool批处理createJob,或在集群配置文件管理器中。

有关更多信息,请参见使用Azure存储和Azure HDInsight集群

读取数据Azure

若要从Azure Blob Storage位置读取数据,请使用以下语法指定位置:

wasbs: / /container@account/path_to_file/file.ext

container@account集装箱名称和path_to_file文件或文件夹的路径。

例如,如果您有一个文件airlinesmall.csv在文件夹中/航空公司在测试存储帐户上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的所有计算数据存储支持,包括直接读取,金宝appmapreduce高数组和深度学习。例如,创建一个ImageDatastore对象,从数据存储中读取指定的图像,然后将图像显示到屏幕上。

setenv(“MW_WASB_SAS_TOKEN”、“YOUR_WASB_SAS_TOKEN”);ds = imageDatastore('wasbs://YourContainer@YourAccount.blob.core.windows.net/',…' inclesubfolders ', true, 'LabelSource', 'foldernames');Img = ds.readimage(1);imshow (img)

数据写入Azure

方法将表格数据从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 =高(ds);Tt = sortrows(rmmissing(Tt));写(wasbs: / / YourContainer@YourAccount.blob.core.windows.net/preprocessedData/, tt);

要读回大数据,请使用数据存储函数。

ds = datastore('wasbs://YourContainer@YourAccount.blob.core.windows.net/preprocessedData/');Tt =高(ds);

Hadoop分布式文件系统

指定数据位置

MATLAB允许您使用Hadoop分布式文件系统(HDFS)作为在线文件存储web服务。在指定数据位置时,必须使用下列形式之一的统一资源定位符(URL)指定文件或文件夹的完整路径:

hdfs: /path_to_file
hdfs: / / /path_to_file
hdfs: / /主机名/path_to_file

主机名主机或服务器的名称和path_to_file文件或文件夹的路径。指定主机名是可选的。时,没有指定主机名, Hadoop使用与MATLAB中HDFS安装关联的默认主机名。

例如,您可以使用这些命令中的任何一个为文件创建一个数据存储,,在一个名为数据位于一个名为myserver

  • ds = tabularTextDatastore(“hdfs: / / /数据/中”
  • ds = tabularTextDatastore(hdfs: / / myserver /数据/中

如果主机名时,它必须对应于fs.default.name属性在Hadoop集群的Hadoop XML配置文件中。

您还可以选择包含端口号。例如,此位置指定一个名为myserver与港口7867,包含文件在一个名为数据

hdfs: / / myserver: 7867 /数据/中

指定的端口号必须与HDFS配置中设置的端口号一致。

Hadoop环境变量

在从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”);

HDFSHortonworks的数据或者Cloudera

如果您当前的计算机可以访问Hortonworks或Cloudera上的HDFS数据®,则不必设置HADOOP_HOMEHADOOP_PREFIX环境变量。MATLAB在使用Hortonworks或Cloudera应用程序边缘节点时自动分配这些环境变量。

防止从内存中清除代码

当从HDFS读取或在本地读取Sequence文件时,使用数据存储函数调用javaaddpath命令。该命令的作用如下:

  • 清除所有Java的定义®由动态类路径上的文件定义的类

  • 从基本工作空间移除所有全局变量和变量

  • 从内存中删除所有编译过的脚本、函数和mexo函数

若要防止清除持久变量、代码文件或墨西哥文件,请使用mlock函数。

数据写入HDFS

这个例子展示了如何使用tabularTextDatastore对象将数据写入HDFS位置。使用函数将您的高数组和分布式数组写入Hadoop分布式文件系统。在分布式或高数组上调用此函数时,必须指定HDFS文件夹的完整路径。下面的例子展示了如何从HDFS读取表格数据到一个高数组,通过删除缺失的条目和排序对其进行预处理,然后将其写回HDFS。

ds = tabularTextDatastore('hdfs://myserver/some/path/dataset/ airlinsmall .csv',…'TreatAsMissing', 'NA', 'SelectedVariableNames', {'ArrDelay'});Tt =高(ds);Tt = sortrows(rmmissing(Tt));写(“hdfs: / / myserver /一些/道路/ preprocessedData / ', tt);

要读回大数据,请使用数据存储函数。

ds = datastore('hdfs://myserver/some/path/preprocessedData/');Tt =高(ds);

另请参阅

||||||||

相关的话题