今日、私は環境を設定したいと思います
変更し、独自のオンラインのコードは、データカプセル化パッケージの2つのクラスに分類されLogBean
パッケージorg.apache.hadoop.examples。 輸入org.apache.hadoop.io.Writable; 輸入org.apache.hadoop.io.WritableComparable; 輸入java.io.DataInput; 輸入java.io.DataOutput; インポートにjava.io.IOException; パブリッククラスLogBean実装WritableComparable <LogBean> { プライベート文字列ID; プライベート文字列の時間。 プライベート文字列のトラフィック; プライベート文字列ブック; プライベート文字列voide。 パブリックLogBean(){ スーパー(); } 公共LogBean(文字列ID、文字列のトラフィック、文字列の時、文字列のブック、文字列voide){ this.timeは時間を=。 this.id = ID。 this.traffic =トラフィック; this.book =書籍; this.voideはクリームを=。 } @オーバーライド パブリック文字列のtoString(){ リターン "LogBean {" + "ID = '" + ID + '' + 」、時間= '」+時間+ '' + 」、トラフィック= '」+交通+ '' + 」、ブック= '」+ブック+ '' + "クリーム=「" +クリーム+ '' + 「}」。 } パブリック文字列getTime(){ 時間を返します。 } 公共のボイドのsetTime(文字列の時間){ this.timeは時間を=。 } パブリック文字列のgetId(){ IDを返します。 } 公共ボイドSETIP(文字列ID){ this.id = ID。 } パブリック文字列getBook(){ 本を返します。 } 公共のボイドsetBook(文字列のブック){ this.book =書籍; } パブリック文字列getVoide(){ 軟膏返します。 } ます。public voidてsetURL(String型のvoide){ this.voideはクリームを=。 } @オーバーライド 公共のintのcompareTo(LogBean O){ 0を返します。 } @オーバーライド 公共のボイドの書き込み(アウトデータ出力)は、IOExceptionがスロー{ out.writeUTF(ID)。 out.writeUTF(時間); out.writeUTF(トラフィック)。 out.writeUTF(書籍); out.writeUTF(voide)。 } @オーバーライド 公共ボイドreadFields(DataInput内の)は、IOExceptionが{スロー ID = in.readUTF()。 時間= in.readUTF()。 交通= in.readUTF(); ブック= in.readUTF(); クリームin.readUTF =(); } }
BaiDuLog.java
データ処理およびスクリーニングするための責任
パッケージorg.apache.hadoop.examples。
輸入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。
輸入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;
パブリッククラスBaiduLog {
パブリック静的クラスBaiduLogMapperはマッパー<LongWritable、テキスト、テキスト、LogBean> {延び
@Overrideは
ボイドマップを保護(LongWritableキー、テキスト値、コンテキストコンテキストは)にIOException、InterruptedExceptionある{スロー
// super.map(キー、値、状況);
文字列ログ= value.toString()。
文字列str = "(cn.baidu.core.inteceptor.LogInteceptor:55)"。
IF(!log.indexOf(STR)= - 1){
文字列[] log_arr = log.split(STR)。
ストリング時間= log_arr [0] .substring(1、10)。
文字列[] log_arr2 = log_arr [1] .split( "\ T")。
文字列ID = log_arr2 [1]。
ストリングのトラフィック= log_arr2 [2]。
文字列のブック= log_arr2 [3]。
ストリングvoide = log_arr2 [4]。
IF(id.equals( "NULL")){
ID = log_arr2 [1]。
}
LogBean logbean =新しいLogBean(ID、時間、交通、書籍、voide)。
context.write(新しいテキスト(IP)、logbean)。
}
}
}
パブリック静的クラスBaiduLogReducerが延びる減速<テキスト、LogBean、IntWritable、テキスト> {
パブリック静的クラスBaiduLogMapperはマッパー<LongWritable、テキスト、テキスト、LogBean> {延び
@Overrideは
ボイドマップを保護(LongWritableキー、テキスト値、コンテキストコンテキストは)にIOException、InterruptedExceptionある{スロー
// super.map(キー、値、状況);
文字列ログ= value.toString()。
文字列str = "(cn.baidu.core.inteceptor.LogInteceptor:55)"。
IF(!log.indexOf(STR)= - 1){
文字列[] log_arr = log.split(STR)。
ストリング時間= log_arr [0] .substring(1、10)。
文字列[] log_arr2 = log_arr [1] .split( "\ T")。
文字列ID = log_arr2 [1]。
ストリングのトラフィック= log_arr2 [2]。
文字列のブック= log_arr2 [3]。
ストリングvoide = log_arr2 [4]。
IF(id.equals( "NULL")){
ID = log_arr2 [1]。
}
LogBean logbean =新しいLogBean(ID、時間、交通、書籍、voide)。
context.write(新しいテキスト(IP)、logbean)。
}
}
}
パブリック静的クラスBaiduLogReducerが延びる減速<テキスト、LogBean、IntWritable、テキスト> {
@Overrideは
IOExceptionが、InterruptedExceptionある{スロー(テキストキー、反復処理可能<LogBean>値は、コンテキスト・コンテキスト)を低減空隙保護
// super.reduce(キー、値、コンテキスト)。
int型の合計= 0;
IOExceptionが、InterruptedExceptionある{スロー(テキストキー、反復処理可能<LogBean>値は、コンテキスト・コンテキスト)を低減空隙保護
// super.reduce(キー、値、コンテキスト)。
int型の合計= 0;
StringBufferの列str =新しいStringBufferを();
INTフラグ= 0。
{(値LogBean logbean)のために
合計++。
IF(フラグ== 0){
str.append(logbean.toString())。
フラグ= 1。
}
}
context.write(新しいIntWritable(和)、新しいテキスト(str.toString()))。
INTフラグ= 0。
{(値LogBean logbean)のために
合計++。
IF(フラグ== 0){
str.append(logbean.toString())。
フラグ= 1。
}
}
context.write(新しいIntWritable(和)、新しいテキスト(str.toString()))。
}
}
公共の静的な無効メイン(文字列[]引数)は例外{スロー
構成CONF =新しい構成を()。
ジョブジョブ= Job.getInstance(confに、 "平均");
}
公共の静的な無効メイン(文字列[]引数)は例外{スロー
構成CONF =新しい構成を()。
ジョブジョブ= Job.getInstance(confに、 "平均");
job.setJarByClass(BaiduLog.class)。
job.setMapperClass(BaiduLog.BaiduLogMapper.class)。
job.setReducerClass(BaiduLog.BaiduLogReducer.class)。
job.setMapperClass(BaiduLog.BaiduLogMapper.class)。
job.setReducerClass(BaiduLog.BaiduLogReducer.class)。
// job.setCombinerClass(BaiduLog.BaiduLogReducer.class)。
job.setOutputKeyClass(Text.class)。
job.setOutputValueClass(LogBean.class)。
job.setOutputValueClass(LogBean.class)。
FileInputFormat.addInputPath(仕事、新しいパス(引数[0]));
FileOutputFormat.setOutputPath(仕事、新しいパス(引数[1]));
System.exit(job.waitForCompletion(真)0:1)。
}
FileOutputFormat.setOutputPath(仕事、新しいパス(引数[1]));
System.exit(job.waitForCompletion(真)0:1)。
}
}
しかし、その後の開発で得られた、インストールされていない最終的なハイブデータベースが限定されています