ビッグデータの教室実験

今日、私は環境を設定したいと思います

変更し、独自のオンラインのコードは、データカプセル化パッケージの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。
インポートに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、テキスト> {
        @Overrideは
        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()))。
        }
    }
    公共の静的な無効メイン(文字列[]引数)は例外{スロー
        構成CONF =新しい構成を()。
        ジョブジョブ= Job.getInstance(confに、 "平均");
        job.setJarByClass(BaiduLog.class)。
        job.setMapperClass(BaiduLog.BaiduLogMapper.class)。
        job.setReducerClass(BaiduLog.BaiduLogReducer.class)。
// job.setCombinerClass(BaiduLog.BaiduLogReducer.class)。
        job.setOutputKeyClass(Text.class)。
        job.setOutputValueClass(LogBean.class)。
        FileInputFormat.addInputPath(仕事、新しいパス(引数[0]));
        FileOutputFormat.setOutputPath(仕事、新しいパス(引数[1]));
        System.exit(job.waitForCompletion(真)0:1)。
    }
}
 しかし、その後の開発で得られた、インストールされていない最終的なハイブデータベースが限定されています

おすすめ

転載: www.cnblogs.com/yang-qiu/p/11853953.html