6

Hadoop ストリーミングを使用する場合、パーティショナーとソーターは次のように設定および構成できます。

hadoop jar /opt/hadoop/hadoop-2.7.1/share/hadoop/tools/lib/hadoop-streaming-2.7.1.jar \
-D mapreduce.map.output.key.field.separator=. \
-D stream.map.output.field.separator= \
-D stream.num.map.output.key.fields=2 \
-D num.key.fields.for.partition=2 \
-D mapreduce.job.output.key.comparator.class=org.apache.hadoop.mapreduce.lib.partition.KeyFieldBasedComparator \
-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner    

main()Javaメソッドでも同じことをしたいと思います。並べ替えは次のように実行できます。

job.setSortComparatorClass(KeyFieldBasedComparator.class);    
KeyFieldBasedComparator.setKeyFieldComparatorOptions(job, "-k 1,2");

ただし、.setKeyFieldPartitionerOptionsクラスのメソッドはそうではありません:KeyFieldBasedPartitionerstatic

KeyFieldBasedPartitioner partitioner = new KeyFieldBasedPartitioner();
partitioner.setKeyFieldPartitionerOptions(job, "-k 1,2");

ただし、ジョブ オブジェクトではクラスしか設定できません。

job.setPartitionerClass(KeyFieldBasedPartitioner.class); 

この場合、上記のオプションをどのように設定できますか? もちろん、独自のパーティショナー クラスを実装することもできますが、簡単な方法が必要な場合、なぜその努力をするのでしょうか?

4

0 に答える 0