2016-09-20 5 views
1

私はhadoopとmapreduceパーティーで新しくなりました。私は自分のパーティショナーを書いています。パーティーでファイルを読む必要があります。私は何度も検索し、分散キャッシュを使うべきだということを知っています。これは私のhadoopパーティーで分散キャッシュを使用するにはどうすればよいのでしょうか?私はパーティーで何を書くべきですか?パーティショナーのhadoopで分散キャッシュを使用するには?

public static class CaderPartitioner extends Partitioner<Text,IntWritable> { 

    @Override 
    public int getPartition(Text key, IntWritable value, int numReduceTasks) { 
     return 0; 
    } 
} 

おかげ

答えて

1

これを動作させる最も簡単な方法は、パーティショナは、Hadoopのに含まれている例を見ることです。この場合、見るべきものはTotalOrderPartitionerであり、これは予め生成されたファイルを読み込んでキーをダイレクトするのに役立ちます。

ソースコードhereとそれを使用する方法を示すgistがあります。

まずあなたは、ファイルが(HDFS上の)あなたのMapReduceジョブのドライバで見つけることができパーティ指示する必要があります:あなたはそれがimplements Configurableそれをへのアクセスを与えることがわかりますTotalOrderPartitioner

// Define partition file path. 
Path partitionPath = new Path(outputDir + "-part.lst"); 
// Use Total Order Partitioner. 
job.setPartitionerClass(TotalOrderPartitioner.class); 
// Generate partition file from map-only job's output. 
TotalOrderPartitioner.setPartitionFile(job.getConfiguration(), partitionPath); 

をこれにより、HDFS上のファイルへのパスを取得できます。

ファイルは、public void setConf(Configuration conf)メソッドで読み取られます。これは、Partitionerオブジェクトの作成時に呼び出されます。この時点で、ファイルを読んで、必要な設定をします。

私はあなたがこのパーティショナーからたくさんのコードを再利用できると思います。

+0

ありがとうございます。申し訳ありませんが、私はこの分野では本当に新しいので、このパーティショナーがファイルをどのように読み込むのか分かりません。あなたが私にもっと簡単な例を与えることは可能でしょうか?ありがとう – saeednasehi

+0

私didiそれ。ありがとう!ありがとう:)) – saeednasehi

関連する問題