2017-09-29 8 views
0

通常のワードカウントの例とは異なるHadoopジョブを作成しようとしています。私の入力データの形式は次のとおりです。Maado()にArrayList <String>を渡すHadoopのジョブ形式

makePush,1964 
makePush,459 
makePush,357 
opAdd,2151 
opAdd,257 
opStop,135 

私はMapper()にこれらを渡すのが好き、そしてその後Reducer()機能が、私は

Mapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT> 

すなわち、仕様とのトラブルを抱えていると思いますしたがって、たとえばopAddKEYIN257VALUEINとなります。その後、すべてopAddの合計はKEYOUTとなり、関連する数字の合計はVALUEOUTとなりますが、それは意味がありませんか?

ただし、これをプログラムで実装する方法はありますか。それは理論上のワードカウントの例とあまり変わらないようです。例えば

答えて

2

、opAddはKEYINなり、及び257は無VALUEIN

なり、キー場合、現在のマップを指定するファイルのオフセットマーカーであるLongWritable、あろうタスクがファイルを読み取っています。あなたがtoString().split(",")データを分離するだろうopAdd,257の行全体、だろう

値は次のようになり、テキスト、

+0

私は別のノードが別の場所にあるファイルを読み込みますので、あなたが二乗平均ものを見ると思いますAHA-それは...ですか? –

+1

正しい。 LongWritableはすべてのマップタスク間でシリアル化され、ファイルラインの読み込み先を知ることができます。 –

+0

Hadoopで '' System.out.println( "* *デバッグ用の中間プロセス状態について何か")できることを知っていますか?この 'log4j'を使う必要がありますか? –

関連する問題