主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

リモートデータの操作

MATLAB®では,Amazon S3™(简单存储服务),微软®Azure®存储Blob,およびHadoop®分散ファイルシステム(HDFS™)のクラウドストレージなど,リモートの場所でデータの読み取りと書き込みを行うことができます。

リモートデータには,データストアオブジェクトを使用してアクセスできます。データストアを使用して、MATLAB のデスクトップ バージョンからデータの一部を調べます。その後、コードをローカルでプロトタイプ化してから、クラスターまたはクラウドにスケール アップできます。データと同じ場所で大規模な計算を実行するほうが効率がよいため、スケール アップすると実行効率性が向上します。リモートの場所にデータを書き込むために、関数を高配列または分散配列に対して使用できます。

Amazon S3

MATLABでは,Amazon S3をアマゾンウェブサービス提供のオンラインファイルストレージウェブサービスとして使用できます。Amazon S3に保存されているデータを,ImageDatastoreFileDatastoreSpreadsheetDatastoreTabularTextDatastoreなどのデータストアオブジェクトで使用できます。データの場所を指定する場合は、次の形式の Uniform Resource Locator (URL) を使用してファイルまたはフォルダーへの絶対パスを指定しなければなりません。

s3: / / bucketname / path_to_file

bucketnameはコンテナーの名前,path_to_fileはファイルまたはフォルダーへのパスです。

Amazon S3は,ウェブサービスインターフェイス経由でデータストレージを提供します。”“バケットをコンテナーとして使用して,オブジェクトをAmazon S3に格納できます。

アクセスの設定

Amazon S3のリモートデータを操作するには,まずアクセスを設定しなければなりません。

  1. アマゾンウェブサービス(AWS)のルートアカウントの新規登録を行います。「アマゾンウェブサービス:アカウント“を参照してください。

  2. AWSのルートアカウントを使用して,我(身份和访问管理)ユーザーを作成します。AWSアカウント内での我ユーザーの作成を参照してください。

  3. アクセスキーを生成して,アクセスキーIDとシークレットアクセスキーを受け取ります。我ユーザーのアクセスキーの管理を参照してください。

  4. https://aws.amazon.com/cli/のAWSコマンドラインインターフェイスツールを使用して,AWSアクセスキーID,シークレットアクセスキー,およびリージョンについてマシンを設定します。あるいは,setenvを使用して環境変数を直接に設定します。

    • AWS_ACCESS_KEY_IDおよびAWS_SECRET_ACCESS_KEY——Amazon S3サービスを認証して使用可能にします(このアクセスキー変数のペアは手順3で生成しました)。

    • AWS_DEFAULT_REGION(オプション)——バケットの地理的領域を選択します。通常,この環境変数の値は自動的に決定されますが,バケットの所有者により手動での設定が求められる場合があります。

    • AWS_SESSION_TOKEN(オプション)- AWS®フェデレーション認証などの一時的なセキュリティ資格情報を使用している場合に,セッショントークンを指定します。

并行计算工具箱™を使用している場合は,クラスターが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/ airlinessmall .csv',…'TreatAsMissing', '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)を微软提供のオンラインファイルストレージWebサービスとして使用できます。Azureに保存されているデータを,ImageDatastoreFileDatastoreSpreadsheetDatastoreTabularTextDatastoreなどのデータストアオブジェクトで使用できます。データの場所を指定する場合は、次の形式の Uniform Resource Locator (URL) を使用してファイルまたはフォルダーへの絶対パスを指定しなければなりません。

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

container@accountはコンテナーの名前,path_to_fileはファイルまたはフォルダーへのパスです。

Azureは、Webサービスインターフェイス経由でデータストレージを提供します。”“ブロブを使用して,データファイルをAzureに保存できます。詳細については,Azureの紹介を参照してください。

アクセスの設定

Azureストレージ内のリモートデータを操作するには,まずアクセスを設定しなければなりません。

  1. 微软Azureアカウントの新規登録を行います。微软Azureアカウントを参照してください。

  2. setenvを使用して以下の2つの環境変数のうちのどちらか1つのみを設定し,認証の詳細をセットアップします。

    • MW_WASB_SAS_TOKEN——共有アクセスシグネチャ(SAS)による認証

      SASを取得します。詳細については,存储资源管理器を使用してAzure Blob存储リソースを管理するで,“BLOBコンテナーのSASを取得する”の節を参照してください。

      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存储web UIまたはエクスプローラーから生成された有効なSASトークンに設定しなければなりません。

    • MW_WASB_SECRET_KEY——アカウントの2つの秘密鍵の1つを使用した認証

      各ストレージアカウントには2つの秘密鍵があり,それを使用した管理者権限アクセスが可能です。環境変数MW_WASB_SECRET_KEYを設定することにより,SASトークンを作成しなくても,これと同じアクセス権をMATLABに付与できます。以下に例を示します。

      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というファイルが/航空公司というフォルダーの中にあり,このフォルダーがテストストレージアカウントwasbs: / / blobContainer@storageAccount.blob.core.windows.net/にある場合,次を使用してデータストアを作成できます。

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

直接の読み取り,mapreduce,高配列,深層学習など,データストアでサポートされるすべての計算にAzureを使用できます。たとえば,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 =数据存储(“wasbs: / / YourContainer@YourAccount.blob.core.windows.net/preprocessedData/”);tt =高(ds);

Hadoop分散ファイルシステム

データ位置の指定

関数tabularTextDatastoreを使用して,Hadoop分散ファイルシステム(HDFS)上のテキストファイルまたはシーケンスファイルのコレクションについてデータストアを作成することもできます。データの場所を指定する場合は、次のいずれかの形式の Uniform Resource Locator (URL) を使用してファイルまたはフォルダーへの絶対パスを指定しなければなりません。

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

主机名はホストまたはサーバーの名前,path_to_fileはファイルまたはフォルダーへのパスです。主机名の指定はオプションです。主机名を指定しない場合,HadoopはMATLABのHadoop分散ファイルシステム(HDFS)インストールに関連付けられている既定のホスト名を使用します。

たとえば,これらのコマンドは両方ともmyserverというホストにある数据という名前のフォルダーのファイルに対するデータストアを作成します。

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

主机名を指定する場合は,HadoopクラスターのHadoop XML構成ファイル内のfs.default.nameプロパティで定義されたnamenodeに一致しなければなりません。

オプションで,ポート番号を含めることもできます。たとえば,この場所は,数据というフォルダーのファイルを含む,ポート7867myserverというホストを指定します。

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 ');

HortonworksまたはCloudera上のHDFSデータ

現在のマシンからHortonworksまたはCloudera®上のHDFSデータにアクセスできる場合,HADOOP_HOMEまたはHADOOP_PREFIXの環境変数を設定する必要はありません。HortonworksまたはClouderaアプリケーションのエッジ ノードを使用するとき、MATLAB はこれらの環境変数を自動的に割り当てます。

メモリからコードがクリアされるのを回避する

HDFSから読み取る場合やシーケンスファイルをローカルに読み取る場合,関数数据存储javaaddpathコマンドを呼び出します。このコマンドは以下を実行します。

  • 動的クラスパス上のファイルによって定義されるすべてのJava®クラスの定義をクリアする

  • すべてのグローバル変数および基本ワークスペースからの変数を削除する

  • すべてのコンパイルされているスクリプト,関数,墨西哥人関数をメモリから削除する

永続変数,コードファイルまたは墨西哥人ファイルがクリアされないようにするには,関数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);

参考

||||||||

関連するトピック