1. 程式人生 > >(十一)輸出排序,Combiner

(十一)輸出排序,Combiner

輸出排序

mapreduce預設會對結果進行排序。

如果是以自定義型別為key,則自定義的類需要實現介面:WritableComparable,這樣mapreduce就會按照自定義的排序方法來實現對輸出結果的排序。

package hadoop05;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;

import org.apache.hadoop.io.WritableComparable;

public class Profit implements WritableComparable<Profit>{

	@Override
	public void readFields(DataInput arg0) throws IOException {
		//實現可序列化
	}

	@Override
	public void write(DataOutput arg0) throws IOException {
		//實現可序列化
	}

	@Override
	public int compareTo(Profit o) {
		//自定義排序,通過返回結果來進行排序
		return 0;
	}
	
}

Combiner

combiner的實現與reduce是一樣的。繼承Reducer,然後重寫reduce方法。

最後在Driver類中設定job對應的combiner既可

job.setCombinerClass(CombinerDemo.class);