使用远程数据

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

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

亚马逊S3

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

S3://BucketName./path_to_file.

BucketName.是容器的名称和path_to_file.是文件或文件夹的路径。

亚马逊S3通过Web Services接口提供数据存储。你可以使用一个作为存储亚马逊S3中对象的容器。

设置访问

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

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

  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_id.aws_secret_access_key.- 身份验证并启用Amazon S3服务的使用。(您在步骤3中生成了这对访问键变量

    • aws_default_region.(可选) - 选择桶的地理区域。此环境变量的值通常是自动确定的,但铲斗所有者可能需要手动设置它。

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

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

读取数据亚马逊S3

您可以使用数据存储对象从Amazon S3读取数据。例如,创建一个imageageAtastore.,从数据存储读取指定的图像,然后将图像显示为屏幕。

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',...'uppordubfolders',true,'labelsource','foldernames');img = ds.readimage(1);imshow(img)

写数据到亚马逊S3

要将数据写入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®存储blob(wasb)作为Microsoft提供的在线文件存储Web服务。您可以使用数据存储对象(如)使用存储在Azure上的数据imageageAtastore.filedatastore.SpreadsheetDatastore., 或者tabulartextdatastore.。指定数据的位置时,必须使用表单的统一资源定位器(URL)指定文件或文件夹的完整路径

黄鼠://集装箱@帐户/path_to_file./file.ext.

集装箱@帐户是容器的名称和path_to_file.是文件或文件夹的路径。

Azure.通过Web Services接口提供数据存储。你可以使用一个斑点在Azure中存储数据文件。看介绍Azure.想要查询更多的信息。

设置访问

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

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

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

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

      获得SAS。有关详细信息,请参阅“获取Blob容器的SA”部分使用Storage Explorer管理Azure Blob存储资源

      在matlab,setmw_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 = e12eh4crclilp3tw%2bardyyr8rrumw45wbxhwpmzsrce%3d'

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

    • mw_wasb_secret_key.- 通过其中一个帐户的两个秘密密钥进行身份验证

      每个存储帐户都有两个允许管理权限访问权限的秘密密钥。可以通过设置SAS令牌来给予MATLAB的相同访问权限mw_wasb_secret_key.环境变量。例如:

      setenv mw_wasb_secret_key'1234567890abcdef1234567890abcdef1234567890abcdef'

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

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

读取数据Azure.

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

黄鼠://集装箱@帐户/path_to_file./file.ext.

集装箱@帐户是容器的名称和path_to_file.是文件或文件夹的路径。

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

location ='wasbs://blobcontainer@storageaccount.blob.core.windows.net/airline/airlinesmall.csv';
ds = tabulartextdataStore(位置,'injasmissing','na',...'selectionvariablenames',{'arrdelay'});

您可以使用Azure进行所有计算数据存储支持,包括直接阅读,金宝appMapreduce.,高大的阵列和深度学习。例如,创建一个imageageAtastore.,从数据存储读取指定的图像,然后将图像显示为屏幕。

setEnv('mw_wasb_sas_token','your_wasb_sas_token');ds = imagedataStore('wasbs://yourcontainer@youraccount.blob.core.windows.net/',...'uppordows',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',...'instamisinging','na','selectedvariablenames',{'arrdelay'});tt =高(DS);tt = sortrows(rmmissing(tt));写('osb://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中的Hadoop分布式文件系统(HDFS)安装关联的默认主机名。

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

  • ds = tabulartextdataStore('hdfs:///data/file1.txt'
  • ds = tabulartextdataStore('HDFS://myserver/data/file1.txt'

如果主机名指定了,它必须对应于由此定义的NameNodefs.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_home.hadoop_prefix.未设置环境变量,然后设置matlab_hadoop_install.环境变量。

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

setenv('hadoop_home','/我自己的路/hadoop-folder.');

HDFS.Hortonworks的数据或Cloudera.

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

阻止从内存中清除代码

从HDF读取或在本地读取序列文件时,数据存储函数调用这一点javaaddpath.命令。此命令执行以下操作:

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

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

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

要防止持久变量,代码文件或mex文件被清除,请使用MOLOCK.功能。

写数据到HDFS.

使用将高大和分布式数组写入Hadoop分布式文件系统的功能。在分布式或高阵列上调用此功能时,必须指定HDFS文件夹的完整路径。以下示例显示了如何通过删除缺失的条目和排序,将表格数据从HDFS读取到高级数组,预处理它,然后将其写回HDFS。

ds = tabulartextdataStore('hdfs://myserver/some/path/dataset/airlinesmall.csv',...'injasmissing','na','selectionvariablenames',{'arrdelay'});tt =高(DS);tt = sortrows(rmmissing(tt));写('hdfs:// myserver / some / path / preprocesseddata /',tt);

要读取高数据,请使用数据存储功能。

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

也可以看看

||||||||

相关话题