2017-03-31 7 views
0

自分のロジックに基づいてカスタムパーティションを実装しました。ファイルも適切に取得できますが、レデューサーの一部のデータが非常に大きいためそれは減速機位相の遅れにつながる。Custom Partitioner Hadoopでレデューサーあたりの出力ファイル数を設定する方法

私は1つのレデューサー出力ファイルの中に多くの小さなファイルを作成することができます。

はここ

public class MyPartioner extends Partitioner<Text, IntWritable> { 
    public int getPartition(Text key, IntWritable value, int setNumRedTask) { 
    String str = key.toString(); 
    if (str.contains("Japan|2014")) { 
    return 0; 
    } else if (str.contains("Japan|2013")) { 
    return 1; 
    } else if (str.contains("Japan|2012")) { 
    return 2; 
    } else if (str.contains("Japan|2011")) { 
    return 3; 
    } else 
    return 4; 
    } 

第一の条件は、20ギガバイトのようなデータの非常に膨大な量を持っていますが、最後の12メガバイトを持っています私のカスタムpartionerです。

答えて

0

あなたの入力セットには、「Japan | 2014」のレコードが多数あります。

最も簡単な方法は、「Japan | {month} | 2014」を追加するか、またはそれを達成するためにマルチ出力を使用することです。

+0

はい、私はMultiOutputを使うことができますが、HBaseのレコードを200個の領域から読み込んで200個の出力ファイルを作成するため、より多くのファイルが作成されます。 。 – SUDARSHAN

関連する問題