Main Content

Hadoop シーケンス ファイルの読み取りと解析

次の例では、キーと値のデータを含むシーケンス ファイルのデータストアを作成する方法を示します。そうすることで、一度に 1 ブロックずつデータを読み取って処理できるようになります。シーケンス ファイルは、Hadoop® を使用する mapreduce 演算の出力です。

Hadoop がインストールされている場所に適切な環境変数を設定します。この場合、MATLAB_HADOOP_INSTALL 環境変数を設定します。

setenv('MATLAB_HADOOP_INSTALL','/mypath/hadoop-folder')

hadoop-folder は Hadoop がインストールされているフォルダー、mypath はそのフォルダーへのパスです。

サンプル ファイル mapredout.seq から、関数 datastore を使用してデータストアを作成します。サンプル ファイルには、一意なキー (航空会社のコードを表す) と対応する値 (その会社が運営するフライトの数を表す) が含まれます。

ds = datastore('mapredout.seq')
ds = 
  KeyValueDatastore with properties:

       Files: {
              ' ...\matlab\toolbox\matlab\demos\mapredout.seq'
              }
    ReadSize: 1 key-value pairs
    FileType: 'seq'

datastoreKeyValueDatastore を返します。関数 datastore は、作成するデータストアの適切なタイプを自動的に判断します。

read の呼び出しごとに最大 6 個のキーと値のペアが読み取られるように、ReadSize プロパティを 6 に設定します。

ds.ReadSize = 6;

関数 readwhile ループ内で使用して、ds からデータのサブセットを読み取ります。データの各サブセットに対して、値の合計を計算します。各サブセットの合計を、sums という名前の配列に保存します。while ループは hasdata(ds)false を返すまで実行されます。

sums = [];
while hasdata(ds)
    T = read(ds);
    T.Value = cell2mat(T.Value);
    sums(end+1) = sum(T.Value);
end

最後に読み取られたキーと値のペアのサブセットを表示します。

T
T = 

      Key       Value
    ________    _____

    'WN'        15931
    'XE'         2357
    'YV'          849
    'ML (1)'       69
    'PA (1)'      318

すべての航空会社が運用したフライトの総数を計算します。

numflights = sum(sums)
numflights =

      123523

参考

| | |

関連するトピック