使用远程数据

在MATLAB®,您可以将数据读取和写入远程位置,如云存储在Amazon S3™(简单存储服务)中的云存储,Microsoft®Azure.®Storage Blob和Hadoop®分布式文件系统HDFS™。

您可以使用数据存储对象访问远程数据。使用数据存储来检查桌面版MATLAB中的部分数据。然后,在本地创建代码原型后,可以扩展到集群或云。向上扩展可以提高执行效率,因为在与数据相同的位置运行大型计算更有效。要将数据写入远程位置,可以使用在高或分布式阵列上的功能。

Amazon S3

MATLAB使您能够使用Amazon S3作为Amazon web Services提供的在线文件存储web服务。您可以将存储在Amazon S3上的数据与数据存储对象一起使用,例如ImageDatastoreFileDatastoreSpreadsheetDatastore,或tabulartextdatastore..在指定数据位置时,必须使用表单的统一资源定位器(URL)指定文件或文件夹的完整路径

s3: / /BucketName./path_to_file.

BucketName.集装箱的名称是和吗path_to_file.文件或文件夹的路径。

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

设置访问

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

  1. 注册Amazon Web服务(AWS)root帐户。看到亚马逊Web服务:帐户

  2. 使用AWS root帐户,创建IAM(Identity和Access Management)用户。看到在您的AWS帐户中创建IAM用户

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

  4. 使用AWS Access键ID,秘密访问密钥和区域配置您的计算机,使用AWS命令行界面工具https://aws.amazon.com/cli/.或者,通过使用setenv

    • AWS_ACCESS_KEY_IDaws_secret_access_key.- 身份验证并启用Amazon S3服务的使用。(您在步骤3中生成了这对访问键变量

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

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

如果使用Parallel Computing Toolbox™,必须确保集群已配置为访问S3服务。您可以通过设置将客户端环境变量复制到集群上的工作人员EnvironmentVariablesparpool批处理createJob或在集群配置文件管理器中。

读取数据Amazon S3

您可以使用数据存储对象从Amazon S3读取数据。例如,创建ImageDatastore,从数据存储中读取指定的图像,然后将该图像显示到屏幕上。

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

要将数据写入Amazon S3,调用函数,并提供到云存储中的文件夹的完整路径。下面的示例展示了如何从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/airlinesmall.csv',...'injasmissing','na','selectedvariablenames',{'arrdelay'});tt =高(ds);tt = sortrows (rmmissing (tt));写('s3:// bucketname / preprocesseddata /',tt);

要回读你的高数据,使用数据存储函数。

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

微软Azure.存储斑点

MATLAB使您可以使用Windows Azure®WASB (Storage Blob)是微软提供的一种在线文件存储web服务。您可以将存储在Azure上的数据与数据存储对象一起使用,例如ImageDatastoreFileDatastoreSpreadsheetDatastore,或tabulartextdatastore..在指定数据位置时,必须使用表单的统一资源定位器(URL)指定文件或文件夹的完整路径

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

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

Azure.通过web服务接口提供数据存储。你可以用斑点在Azure中存储数据文件。看到介绍Azure.为更多的信息。

设置访问

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

  1. 注册一个微软Azure帐户微软Azure帐户

  2. 通过使用以下两个环境变量中的两个恰好设置了您的验证详细信息setenv

    • mw_wasb_sas_token.—SAS (Shared Access Signature)认证

      获得SAS。有关详细信息,请参阅“获取Blob容器的SA”部分使用Storage Explorer管理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“1234567890 abcdef1234567890abcdef1234567890abcdef”

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

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

读取数据Azure.

要从WASB位置读取数据,请使用数据存储对象。要生成文件位置,请从文件名开始file.ext,并使用文件路径前缀/ path_to_file.和您的帐户名称wasbs: / / container@account /.完整的数据位置使用以下语法:

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

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

例如,如果您有一个文件Airlinesmall.csv.在一个文件夹/航空公司在测试存储帐户上黄蜂://blobcontainer@storageaccount.blob.core.windows.net/,然后您可以使用以下方式创建数据存储:

位置=“wasbs: / / blobContainer@storageAccount.blob.core.windows.net/airline/airlinesmall.csv”;
ds = tabularTextDatastore(location, 'TreatAsMissing', 'NA',…)SelectedVariableNames, {' ArrDelay '});

您可以使用Azure进行所有计算数据存储支持,包括直接阅读,万博1manbetxMapreduce.高数组和深度学习。例如,创建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,请致电函数,并提供到云存储中的文件夹的完整路径。下面的示例展示了如何从Azure读取表格数据到一个高数组中,通过删除缺失的条目和排序对其进行预处理,然后将其写回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分布式文件系统

指定数据位置

您还可以为驻留在Hadoop分布式文件系统(HDFS)上的文本文件或序列文件集合创建数据存储tabulartextdatastore.函数。当您指定数据的位置时,您必须使用以下形式之一的统一资源定位器(URL)指定文件或文件夹的完整路径:

hdfs: /path_to_file.
HDFS:///path_to_file.
HDFS://主机名/path_to_file.

主机名主机或服务器的名称和path_to_file.文件或文件夹的路径。指定主机名是可选的。当您没有指定主机名, Hadoop使用与MATLAB中HDFS (Hadoop Distributed File System)安装相关的默认主机名。

例如,这两个命令都为文件创建一个数据存储,file1.txt.,放在名为数据位于命名的主人myserver

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

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

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

'HDFS:// myserver:7867 / data / file1.txt'

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

Hadoop环境变量

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

  • Hadoop v1只 - 设置HADOOP_HOME环境变量。

  • Hadoop v2只 - 设置hadoop_prefix.环境变量。

  • 如果您使用Hadoop V1和Hadoop V2,或者如果是HADOOP_HOMEhadoop_prefix.环境变量未设置,则设置MATLAB_HADOOP_INSTALL环境变量。

例如,使用此命令设置HADOOP_HOME环境变量。hadoop-folder是否安装了Hadoop的文件夹,/ mypath /是该文件夹的路径。

setenv(“HADOOP_HOME”、“/ mypath /hadoop-folder');

HDFSHortonworks的数据或Cloudera

如果您当前的机器可以访问HDFS数据的Hortonworks或Cloudera®,那么你不必设置HADOOP_HOME或者hadoop_prefix.环境变量。MATLAB在使用Hortonworks或Cloudera应用程序边缘节点时会自动分配这些环境变量。

防止从内存中清除代码

当从HDFS读取或在本地读取Sequence文件时,数据存储函数调用这件事javaaddpath命令。此命令执行以下操作:

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

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

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

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

写数据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 /一些/道路/ preprocessedData / ');tt =高(ds);

另请参阅

||||||||

相关主题