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'datastore は KeyValueDatastore を返します。関数 datastore は、作成するデータストアの適切なタイプを自動的に判断します。
read の呼び出しごとに最大 6 個のキーと値のペアが読み取られるように、ReadSize プロパティを 6 に設定します。
ds.ReadSize = 6;
関数 read を while ループ内で使用して、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
参考
datastore | KeyValueDatastore | mapreduce | tall