主要内容

使用远程数据

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

  • 亚马逊S3™ (简单存储服务)

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

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

亚马逊S3

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

s3://bucketname/path_to_file

bucketname是容器的名称,并且path_to_file是文件或文件夹的路径。

亚马逊S3通过web服务接口提供数据存储。你可以使用水桶作为在AmazonS3中存储对象的容器。

设置访问权限

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

  1. 注册一个Amazon Web Services (AWS)根帐户。看到亚马逊网络服务:帐户.

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

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

  4. 使用AWS命令行接口工具使用AWS访问密钥ID、秘密访问密钥和区域配置您的机器https://aws.amazon.com/cli/。或者,使用直接设置环境变量环境变量:

    • AWS\u访问\u密钥\u IDAWS_SECRET_ACCESS_KEY—支持Amazon S3服务的鉴权和使用。(您在步骤3中生成了这对访问键变量。)

    • AWS_默认_区域(可选)-选择铲斗的地理区域。此环境变量的值通常是自动确定的,但bucket所有者可能要求您手动设置它。

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

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

读取的数据亚马逊S3

下面的示例演示如何使用图像数据存储对象从AmazonS3读取指定的图像,然后在屏幕上显示该图像。

setenv('AWS_-ACCESS_-KEY_-ID','YOUR_-AWS_-ACCESS_-KEY_-ID');setenv('AWS_-SECRET_-KEY','YOUR_-AWS_-SECRET_-ACCESS_-KEY_-KEY_-ID');ds=imageDatastore('s3://bucketname/image_-datastore/jpegfiles',…'IncludeSubfolders','true','LabelSource','foldername');img=ds.readimage(1);imshow(img)

将数据写入亚马逊S3

下面的示例演示如何使用tabularTextDatastore对象将表格数据从AmazonS3读入一个高数组,通过删除丢失的条目和排序对其进行预处理,然后将其写回AmazonS3。

setenv('AWS_ACCESS_KEY_ID'、'YOUR_AWS_ACCESS_KEY_ID');setenv('AWS_SECRET_ACCESS_KEY','YOUR_AWS_SECRET_ACCESS_KEY');ds=tablertextdatastore('s3://bucketname/dataset/airlinesmall.csv',…'TreatAsMissing','NA','SelectedVariableNames',{'ArrDelay'});tt=高(ds);tt=sortrows(rmmissing(tt));写入('s3://bucketname/preprocessedData/',tt);

要读取高数据,请使用数据存储作用

ds=数据存储('s3://bucketname/preprocessedData/');tt=高(ds);

AzureBlob存储

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

黄蜂://container@account/path_to_file/file.ext

container@account是容器的名称,并且path_to_file是文件或文件夹的路径。

Azure通过web服务接口提供数据存储。你可以使用要在Azure中存储数据文件,请参阅介绍Azure了解更多信息。

设置访问权限

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

  1. 注册Microsoft Azure帐户,请参阅Microsoft Azure帐户.

  2. 使用以下两个环境变量中的一个设置身份验证详细信息环境变量:

    • MW_WASB_SAS_TOKEN-通过共享访问签名(SAS)进行身份验证

      获得一个SAS。有关详细信息,请参见中“获取用于blob容器的SAS”小节使用存储资源管理器管理Azure Blob存储资源.

      在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=E12EH4CRCLLP3TW%2BArdYYR8RruMW45WBXhWpMzSRCE%3D'

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

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

      每个存储帐户都有两个允许管理权限访问的密钥。通过设置MW_WASB_密钥环境变量。例如:

      setenv MW_WASB_密钥“1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF”

如果您使用的是并行计算工具箱,则必须通过设置环境变量在里面帕尔普,一批,createJob,或在群集配置文件管理器中。

有关详细信息,请参阅将Azure存储与Azure HDInsight群集一起使用.

读取的数据Azure

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

黄蜂://container@account/path_to_file/file.ext

container@account是容器的名称,并且path_to_file是文件或文件夹的路径。

例如,如果您有一个文件airlinesmall.csv在文件夹中/航空公司在测试存储帐户上wasbs: / / blobContainer@storageAccount.blob.core.windows.net/,则可以使用以下方法创建数据存储:

地点:wasbs://blobContainer@storageAccount.blob.core.windows.net/airline/airlinesmall.csv';
ds=表外数据存储(位置,'TreatAsMissing','NA',…'SelectedVariableNames',{'ArrDelay'});

你可以使用Azure来支持所有的计算数据存储,包括直接读取,金宝appmapreduce,高数组和深度学习。例如,创建图像数据存储对象,从数据存储中读取指定的图像,然后在屏幕上显示该图像。

setenv('MW_WASB_SAS_TOKEN','YOUR_WASB_SAS_TOKEN');ds=imageDatastore('wasbs://YourContainer@yourcount.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=TablerTextDatastore('wasbs://YourContainer@yourcount.blob.core.windows.net/dataset/airlinesmall.csv',…'TreatAsMissing','NA','SelectedVariableNames',{'ArrDelay'});tt=高(ds);tt=sortrows(rmmissing(tt));写('wasbs://YourContainer@yourcount.blob.core.windows.net/preprocessedData/',tt);

要读取高数据,请使用数据存储作用

ds =数据存储(“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中Hadoop分布式文件系统(HDFS)安装相关联的默认主机名。

例如,您可以使用以下任一命令为文件创建数据存储,,位于名为数据位于名为我的服务器:

  • ds=表格数据存储('hdfs:///data/file1.txt')
  • ds=表格数据存储('hdfs://myserver/data/file1.txt')

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

或者,您可以包括端口号。例如,此位置指定一个名为我的服务器与港口7867,包含该文件在名为数据:

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

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

设置Hadoop环境变量

在读取HDFS之前,请使用环境变量函数将适当的环境变量设置为安装Hadoop的文件夹。此文件夹必须可以从当前计算机访问。

  • Hadoop v1 -设置HADOOP_主页环境变量。

  • 仅限Hadoop v2-设置HADOOP_PREFIX环境变量。

  • 如果您同时使用Hadoop v1和Hadoop v2,或者HADOOP_主页HADOOP_PREFIX未设置环境变量,请设置MATLAB\u HADOOP\u安装环境变量。

例如,使用该命令设置HADOOP_主页环境变量。hadoop文件夹是安装Hadoop的文件夹吗/我的路径/是该文件夹的路径。

setenv('HADOOP_HOME','/我的路径/hadoop文件夹”);

HDFSHortonworks的数据克劳德拉

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

防止从内存中清除代码

从HDFS读取或本地读取序列文件时数据存储函数调用的javaaddpath命令。该命令执行如下操作:

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

  • 从基本工作区中删除所有全局变量和变量

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

要防止清除持久变量、代码文件或MEX文件,请使用姆洛克作用

将数据写入HDFS

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

ds=TablerTextDatastore('hdfs://myserver/some/path/dataset/airlinesmall.csv“,…”TreatAsMissing“,”NA“,”SelectedVariableNames“,{'ArrDelay'});tt=高(ds);tt=sortrows(rmmissing(tt));写('hdfs://myserver/some/path/preprocessedData/,tt);

要读取高数据,请使用数据存储作用

ds=数据存储('hdfs://myserver/some/path/preprocessedData/tt=高(ds);

另见

||||||||

相关的话题