パッケージday02。
輸入org.apache.hadoop.conf.Configuration。
輸入org.apache.hadoop.fs.Path。
輸入org.apache.hadoop.io.IntWritable;
輸入org.apache.hadoop.io.LongWritable;
輸入org.apache.hadoop.io.Text;
輸入org.apache.hadoop.mapreduce.Job。
輸入org.apache.hadoop.mapreduce.Mapper;
輸入org.apache.hadoop.mapreduce.Reducer。
輸入org.apache.hadoop.mapreduce.lib.input.FileInputFormat。
輸入org.apache.hadoop.mapreduce.lib.output.FileOutputFormat。
インポートにjava.io.IOException;
/ **
* @author
@Create 2019年9月17日16:33 *
* * /
// 記録のLongWritable(地図入力側)オフセット
// 処理されるデータの種類をテキスト読ん
//は、(これらの2つのタイプ不変ということに注意してください。 )
// テキスト(マップ出力端子)
// IntWritable
パブリック クラスWordCount1 {
// マップ側
パブリック 静的 クラス MapTask 延びマッパー<LongWritable、テキスト、テキスト、IntWritableは> {
@Overrideが
保護 ボイドマップ(LongWritableキー、テキスト値、コンテキスト・コンテキスト)スローにIOException、InterruptedExceptionが{
//オフセット値は、我々のデータを維持するための鍵である
// コンテキストが外に処理されたデータを書き込むために使用された
[]の単語文字列 = value.toString()スプリット(「」);
//は(Hadoopの、1データを書き出します)
のために(文字列ワード:ワード){
context.write(新しい新しいテキスト(ワード)、新しい新しい IntWritable(1。 ));
}
}
}
// 減らす側(Hadoopの,. 1)(Hadoopの、35)
公共の 静的 クラス ReduceTask 延び減速を<テキスト、IntWritable、テキスト、IntWritable> {
@Overrideは、
保護された ボイド(テキストキー、反復処理可能<IntWritable>値は、コンテキスト・コンテキスト)が低減スローにIOException、InterruptedExceptionある{
// キー指的是单词Hadoopの
// 値(1,1,1,1,1,1,1)
int型のカウント= 0 ;
ため(IntWritable値:値){
カウント ++ 。
}
// 写出去
context.write(新)テキスト(キー、新しいIntWritable(カウント));
}
}
パブリック 静的 ボイドメイン(文字列[]引数)をスローIOException、ClassNotFoundExceptionが、InterruptedExceptionある{
するSystem.setProperty( "HADOOP_USER_NAME"、 "ルート" );
//は、実行するために、入力、JVMのタイプを教えて
設定を= confの新しい新しいコンフィギュレーション();
// 接続のHadoopクラスタのパラメータを設定
conf.set(「FSを。 defaultFS "" HDFS:// hadoop01:9000 " );
求人 = Job.getInstance(CONF);
job.setMapperClass(MapTask。クラス);
job.setReducerClass(ReduceTask。クラス);
job.setJarByClass(WordCount1。クラス) ;
// ジョブは、出力のタイプの出力パラメータを語りました
job.setMapOutputKeyClass(テキスト。クラス);
job.setMapOutputValueClass(IntWritable。クラス);
job.setOutputKeyClass(テキスト。クラス);
job.setOutputValueClass(IntWritable。クラス);
// 仕事を出力パスで入力を伝える
FileInputFormat.addInputPath(仕事、新しい新しいパス( "/ベイダ/ wc.txt" ));
FileOutputFormat.setOutputPath(仕事、新しい新しいパス( "/ TEST1" ));
// ?bはトリプル表現である場所についてのヒント
ブール = job.waitForCompletion B (真の);
System.out.printlnは(B "Niubiの成功": "問題があります"? )。
}
}