您可以使用MATLAB从远程位置读取和写入数据®函数和对象,例如文件I/O函数和一些数据存储对象。这些示例展示了如何在以下云存储平台上设置、读取和写入远程位置:
Amazon S3™(简单存储服务)
Azure®Blob存储(以前称为Windows Azure®存储Blob (WASB))
Hadoop®分布式文件系统(HDFS)™)
MATLAB允许您使用Amazon S3作为Amazon web Services提供的在线文件存储web服务。在指定数据位置时,必须使用表单的统一资源定位器(URL)指定文件或文件夹的完整路径
s3: / /bucketname/path_to_file
bucketname
是容器的名称,并且path_to_file
是文件或文件夹的路径。
亚马逊S3通过web服务接口提供数据存储。你可以使用水桶作为在AmazonS3中存储对象的容器。
要在Amazon S3中使用远程数据,必须首先设置访问权限:
注册一个Amazon Web Services (AWS)根帐户。看到亚马逊网络服务:帐户.
使用您的AWS根帐户,创建IAM(身份和访问管理)用户。看到在您的AWS帐户中创建IAM用户.
生成一个访问密钥以接收一个访问密钥ID和一个秘密访问密钥。看到管理IAM用户的访问密钥.
使用AWS命令行接口工具使用AWS访问密钥ID、秘密访问密钥和区域配置您的机器https://aws.amazon.com/cli/。或者,使用直接设置环境变量setenv
:
AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
—支持Amazon S3服务的鉴权和使用。(您在步骤3中生成了这对访问键变量。)
AWS_默认_区域
(可选)-选择铲斗的地理区域。此环境变量的值通常是自动确定的,但bucket所有者可能要求您手动设置它。
AWS_SESSION_TOKEN
(可选)——如果您使用临时安全凭据(如AWS),则指定会话令牌®联合身份验证。
如果您使用的是并行计算工具箱™, 您必须确保群集已配置为访问S3服务。您可以通过设置将客户端环境变量复制到群集上的工作程序环境变量
在帕尔普
,批处理
,createJob
,或在集群概要文件管理器中。
下面的示例演示如何使用图像数据存储
对象从Amazon S3读取指定的图像,然后将该图像显示在屏幕上。
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)
下面的示例演示如何使用tabularTextDatastore
对象将表格数据从AmazonS3读入一个高数组,通过删除丢失的条目和排序对其进行预处理,然后将其写回AmazonS3。
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/ airlinessmall .csv',…'TreatAsMissing', 'NA', 'SelectedVariableNames', {'ArrDelay'});tt =高(ds);tt = sortrows (rmmissing (tt));写(“s3: / / bucketname / preprocessedData /”,tt);
要回读你的高数据,使用数据存储
功能。
ds=数据存储('s3://bucketname/preprocessedData/');tt=高(ds);
MATLAB允许您使用Azure Blob Storage进行在线文件存储。在指定数据位置时,必须使用表单的统一资源定位器(URL)指定文件或文件夹的完整路径
wasbs: / /container@account/path_to_file/file.ext
container@account
是容器的名称,并且path_to_file
是文件或文件夹的路径。
Azure通过web服务接口提供数据存储。你可以使用团要在Azure中存储数据文件,请参阅介绍Azure为更多的信息。
要在Azure存储中使用远程数据,必须首先设置访问权限:
注册一个微软Azure帐户Microsoft Azure帐户.
使用以下两个环境变量中的一个设置身份验证详细信息setenv
:
MW_WASB_SAS_TOKEN
-通过共享访问签名(SAS)进行身份验证
获得一个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_密钥
-通过帐户的两个秘密密钥之一进行身份验证
每个存储帐户都有两个允许管理权限访问的密钥。通过设置MW_WASB_密钥
环境变量。例如:
setenv MW_WASB_SECRET_KEY“1234567890 abcdef1234567890abcdef1234567890abcdef”
如果您使用的是并行计算工具箱,则必须通过设置环境变量
在帕尔普
,批处理
,createJob
,或在集群概要文件管理器中。
有关更多信息,请参见将Azure存储与Azure HDInsight群集一起使用.
要从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/
,则可以使用以下方法创建数据存储:
位置=“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)
这个例子展示了如何使用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 =数据存储(“wasbs: / / YourContainer@YourAccount.blob.core.windows.net/preprocessedData/”);tt =高(ds);
MATLAB允许您使用Hadoop分布式文件系统(HDFS)作为在线文件存储web服务。当您指定数据的位置时,您必须使用以下形式之一的统一资源定位器(URL)指定文件或文件夹的完整路径:
hdfs:/path_to_file
hdfs: / / /path_to_file
hdfs: / /主机名/path_to_file
主机名
主机或服务器的名称,以及path_to_file
是文件或文件夹的路径。指定主机名
是可选的。当您没有指定主机名
, Hadoop使用与MATLAB中HDFS (Hadoop Distributed File System)安装相关的默认主机名。
例如,您可以使用以下命令中的任意一个来为文件创建数据存储,中
,位于名为数据
位于名为我的服务器
:
ds=表格数据存储(“hdfs: / / /数据/中”)
ds=表格数据存储('hdfs://myserver/data/file1.txt')
如果主机名
指定时,它必须对应于fs.default.name
属性在Hadoop集群的Hadoop XML配置文件中。
您还可以选择包含端口号。例如,此位置指定名为我的服务器
与港口7867
,包含该文件中
在名为数据
:
hdfs: / / myserver: 7867 /数据/中
指定的端口号必须与HDFS配置中设置的端口号匹配。
在从HDFS读取数据之前,请使用setenv
函数将适当的环境变量设置为安装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文件夹”);
如果您当前的机器可以访问Hortonworks或Cloudera上的HDFS数据®,则不必设置HADOOP_主页
或HADOOP_PREFIX
环境变量。MATLAB在使用Hortonworks或Cloudera应用程序边缘节点时自动分配这些环境变量。
从HDFS读取或本地读取序列文件时数据存储
函数调用的javaaddpath
命令。该命令执行如下操作:
清除所有Java的定义®由动态类路径上的文件定义的类
从基本工作区中删除所有全局变量和变量
从内存中删除所有已编译的脚本、函数和mex函数
要防止清除持久变量、代码文件或MEX文件,请使用mlock
功能。
这个例子展示了如何使用tabularTextDatastore
对象将数据写入HDFS位置。使用写
函数将您的庞大的分布式数组写入Hadoop分布式文件系统。当你在一个分布式或高数组上调用这个函数时,你必须指定一个HDFS文件夹的完整路径。下面的例子展示了如何从HDFS读取表格数据到一个高数组中,通过删除缺少的条目和排序进行预处理,然后将其写回HDFS。
ds = tabularTextDatastore('hdfs://myserver/some/path/dataset/ airlinessmall .csv',…'TreatAsMissing', 'NA', 'SelectedVariableNames', {'ArrDelay'});tt =高(ds);tt = sortrows (rmmissing (tt));写(“hdfs: / / myserver /一些/道路/ preprocessedData / ', tt);
要回读你的高数据,使用数据存储
功能。
ds=数据存储('hdfs://myserver/some/path/preprocessedData/tt=高(ds);
数据存储
|tabularTextDatastore
|写
|imageDatastore
|imread
|imshow
|javaaddpath
|mlock
|setenv