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