mapduceパーティション操作は、データが特定の値に応じて分離されています

コード
輸入org.apache.commons.lang.ObjectUtils。
輸入org.apache.hadoop.conf.Configuration。
輸入org.apache.hadoop.conf.Configured;
輸入org.apache.hadoop.fs.Path。
輸入org.apache.hadoop.io.NullWritable;
輸入org.apache.hadoop.io.Text;
輸入org.apache.hadoop.mapreduce.Job。
輸入org.apache.hadoop.mapreduce.lib.input.TextInputFormat。
輸入org.apache.hadoop.mapreduce.lib.output.TextOutputFormat。
輸入org.apache.hadoop.util.Tool。
輸入org.apache.hadoop.util.ToolRunner。

/ ** 
 *のIntelliJ IDEAを使用して作成。
 *ユーザー:@别慌
 日付*:2019年6月16日
 *時間:午前〇時44 
 *説明:
 * / 
パブリック クラス PartitionerMain 拡張設定済みの実装のツール{
     公共の int型の RUN(文字列[] args)をスロー例外{
         // ジョブクラス、MRに組み立て 
        ジョブのジョブを=ジョブを.getInstance(スーパー .getConf()、PartitionerMainの。クラス.getSimpleName());
         // 実行の包装 
        job.setJarByClass(PartitionerMain。クラス);
         // まずステップ:にKVを解析し、ファイルを読み込む 
        job.setInputFormatClass(TextInputFormat。クラス);
        TextInputFormat.addInputPath(仕事、新しいパス(引数[0 ])); 

        // 自定义マップ逻辑 
        job.setMapperClass(partitionMap。クラス); 

        job.setMapOutputKeyClass(テキスト。クラス); 
        job.setMapOutputValueClass(NullWritable。クラス); 

        // 第三部分区 
         job.setPartitionerClass(partitionerOwn。クラス);
        // 自定义逻辑減らす 
        job.setReducerClass(partitionReduce。クラス)。
        job.setOutputKeyClass(テキスト。クラス); 
        job.setOutputValueClass(NullWritable。クラス);
        job.setNumReduceTasks( 2 );
         // 設定された出力クラス 
        job.setOutputFormatClass(TextOutputFormat。クラス);
         // 出力経路ダイ書き込まれていない、渡されたパラメータ 
        TextOutputFormat.setOutputPath(仕事、新しい新しいパス(引数[1 ])); 

        / / タスク提出
        ブール(B = job.waitForCompletionをtrueに)、

        リターン B 0 :. 1?; 
    } 

    パブリック 静的 ボイドメイン(文字列引数[])をスロー例外{
         int型の RUNは= ToolRunner.run(新しい新しい構成()、新しい新PartitionerMain()、引数)。
        でSystem.exit(実行)。

    } 
} 












インポートorg.apache.hadoop.io.NullWritable。
輸入org.apache.hadoop.io.Text;
輸入org.apache.hadoop.mapreduce.Partitioner。

/ ** 
 *のIntelliJ IDEAを使用して作成。
 *ユーザー:别慌@ 
 *日:2019年6月16日
 *時間:0:56 
 *説明:
 * / 
パブリック クラス partitionerOwnは拡張パーティショナ<テキスト、NullWritable> {
     公共 のint getPartition(テキスト、テキスト、NullWritable nullWritable、int型i)を{ 
        String []型こぼれ= text.toString()スプリット( "\ tの"。); 
        文字列gameResultは =こぼれた[5 ]。
        もしNULL!= gameResult && "" = gameResult){
             場合(15 Integer.parseInt(gameResult)> ){
                 戻り 0 ; 
            } {
                 リターン 1 
            } 

        } 
        戻り 0 
    } 
} 











インポートorg.apache.hadoop.io.LongWritable。
輸入org.apache.hadoop.io.NullWritable;
輸入org.apache.hadoop.io.Text;
輸入org.apache.hadoop.mapreduce.Mapper; 

インポートにjava.io.IOException; 



/ ** 
 *のIntelliJ IDEAを使用して作成。
 *ユーザー:@别慌
 *日:2019年6月16日
 *時間:午後12時47 
 *説明:
 * / 
パブリック クラス partitionMapが   拡張マッパー<LongWritable、テキスト、テキスト、NullWritable>   {
     保護された  無効   マップ(LongWritableキー、テキスト値を、コンテキスト・コンテキスト)がスローにIOException、InterruptedExceptionある{ 
        context.write(値、NullWritable.getを())。
    } 

} 












インポートorg.apache.hadoop.io.NullWritable。
インポートorg.apache.hadoop.io.Text;
輸入org.apache.hadoop.mapreduce.Reducer。

インポートにjava.io.IOException; 

/ ** 
 *のIntelliJ IDEAを使用して作成。
 *ユーザー:@别慌
 *日:2019年6月16日
 *時間:1:14 
 *説明:
 * / 
パブリック クラス partitionReduceが拡張リデューサー<テキスト、NullWritable、テキスト、NullWritable> { 

    保護された  ボイドが(テキストキー、反復処理可能<NullWritableを減らします>値は、コンテキスト・コンテキスト)がスローにIOException、InterruptedExceptionある{ 

        context.write(キー、NullWritable.getを())。
    } 
}
コードの表示

pom.xml

<?xml version = "1.0"エンコード= "UTF-8"?> 
<プロジェクトのxmlns = "http://maven.apache.org/POM/4.0.0" 
         のxmlnsを:XSI = "のhttp://www.w3 .ORG / 2001 / XMLスキーマ・インスタンス」
         のxsi:のschemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion> 4.0.0 </ modelVersion> 

    <のgroupId> com.ali </のgroupId> 
    <たartifactId> HDFS </たartifactId> 
    <バージョン> 1.0-SNAPSHOT </バージョン> 
    <依存性> 
        <依存性> 
            <のgroupId> org.apache .hadoop </ groupIdを> 
            <たartifactId> Hadoopの共通</たartifactId>
            <バージョン> 2.9.0 </バージョン> 
        </依存関係> 
        <依存>
            <groupIdを> org.apache.hadoop </ groupIdを> 
            <たartifactId> HadoopのHDFS-</たartifactId> 
            <バージョン> 2.9.0 </バージョン> 
        </依存関係> 

        < -のhttps:!// mvnrepository.com/artifact/ org.apache.hadoop / HadoopのMapReduceの-クライアントコア- > 
        <依存> 
            <groupIdを> org.apache.hadoop </ groupIdを> 
            <たartifactId> HadoopのMapReduceの-クライアントコア</たartifactId> 
            <バージョン> 2.9。 0 </バージョン> 
        </依存関係> 

    </依存関係> 


</プロジェクト>
コードの表示

Javaプロジェクトのアーキテクチャ

  • PartitionerMain
  • partitionerOwn
  • partitionMap
  • partitionReduce

Hadoopのジャーmouse.jar PartitionerMain /パーティション/ outtest

                     ジャーHDFS主な機能上のHDFS出力ファイルオブジェクトファイル(既存のではありません)

ソース・ファイル(パーティション)

1 0 1 2017年7月31日23時10分12秒834232 6     sadasaa
 2 9 6 2019-06-76 78:97:12 687907 45 dsdskd
コードの表示

 

おすすめ

転載: www.cnblogs.com/tangsonghuai/p/11037345.html