このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
この例では,mapreduce
を使用してデータセット内で単一の変数の平均を計算する方法を示します。mapreduce
を,単一のキー,最低限の計算および中間状態(中間合計およびカウントの累積)で使用する簡単な方法を示します。
airlinesmall.csv
データセットを使用してデータストアを作成します。この12 MBのデータセットには,到着時間と出発時間を含む,いくつかの航空会社のフライト情報が29列に含まれます。この例では,ArrDelay
(フライト到着遅延時間)を目的の変数として選択します。
ds = tabularTextDatastore (“airlinesmall.csv”,“TreatAsMissing”,“NA”);ds。SelectedVariableNames =“ArrDelay”;
データストアは,既定では“NA”
値を欠損として扱い,欠損値を南
値に置換します。さらに,SelectedVariableNames
プロパティにより,選択した目的の変数のみを処理することができ,预览
を使用して検査できます。
预览(ds)
ans =8×1表ArrDelay ________ 8 8 21 13 4 59 3 11
関数mapreduce
は,入力として地图関数と减少関数を必要とします。マッパーはデータのブロックを受け取って中間結果を出力します。リデューサーは中間結果を読み取って最終結果を生成します。
次の例では,マッパーによりデータの各ブロック内の到着遅延時間のカウントと合計を求めます。次にマッパーは,これらの値をキー“PartialCountSumDelay”
に関連付けられた中間値として保存します。
地图関数のファイルを表示します。
函数meanArrivalDelayMapper (data, info, intermKVStore)% Data是一个n × 1的ArrDelay表。首先删除缺失值:数据(isnan (data.ArrDelay ),:) = [];%记录部分计数和总和,减数人将其累加。partCountSum = [length(data.ArrDelay), sum(data.ArrDelay)];添加(intermKVStore“PartialCountSumDelay”, partCountSum);结束
リデューサーは,マッパーが保存した各ブロックのカウントと合計を受け入れます。そしてこの値を合計して,総カウントと総合計を求めます。全体の平均到着遅延時間は,値を単純に除算したものです。マッパーは単一の一意なキーのみを追加するため,mapreduce
は,このリデューサーを一度だけ呼び出します。リデューサーは,添加
を使用して単一のキーと値のペアを出力に追加します。
减少関数のファイルを表示します。
函数meanArrivalDelayReducer(intermKey, intermValIter, outKVStore) count = 0; / /指定指定时间金额= 0;而hasnext(intermValIter) countSum = getnext(intermValIter);count = count + countSum(1);sum = sum + countSum(2);结束meanDelay = /数总和;%添加到outKVStore的键值对将成为mapreduce的输出添加(outKVStore“MeanArrivalDelay”, meanDelay);结束
mapreduce
を使用して,地图関数および减少関数をデータストアds
に適用します。
meanDelay = mapreduce(ds, @meanArrivalDelayMapper, @meanArrivalDelayReducer);
******************************** * MAPREDUCE的进展 * ******************************** 地图地图16%减少0% 32% 0%减少0%减少0%地图48%减少0% 65%减少0%地图81%减少0% 97%减少0%地图100%减少0% 100%减少100%
mapreduce
は,現在のフォルダー内のファイルでデータストアmeanDelay
を返します。
出力データストアmeanDelay
から最終結果を読み取ります。
readall (meanDelay)
ans =1×2表键值 ____________________ __________ {' MeanArrivalDelay’}{[7.1201]}
ここに挙げるのは,mapreduce
がデータに適用する地图関数と减少関数です。
函数meanArrivalDelayMapper (data, info, intermKVStore)% Data是一个n × 1的ArrDelay表。首先删除缺失值:数据(isnan (data.ArrDelay ),:) = [];%记录部分计数和总和,减数人将其累加。partCountSum = [length(data.ArrDelay), sum(data.ArrDelay)];添加(intermKVStore“PartialCountSumDelay”, partCountSum);结束%-------------------------------------------------------------------------函数meanArrivalDelayReducer(intermKey, intermValIter, outKVStore) count = 0; / /指定指定时间金额= 0;而hasnext(intermValIter) countSum = getnext(intermValIter);count = count + countSum(1);sum = sum + countSum(2);结束meanDelay = /数总和;%添加到outKVStore的键值对将成为mapreduce的输出添加(outKVStore“MeanArrivalDelay”, meanDelay);结束%-------------------------------------------------------------------------
mapreduce
|tabularTextDatastore