閱讀733 返回首頁    go 阿裏雲 go 技術社區[雲棲]


hadoop支持的數據類型

mapreduce的過程是:

map:(k1,v1)------list(k2,v2)

reduce:(k2,list(v2))------list(k3,v3)

在map和reduce的過渡階段,map出的結果中,key相同的數據會被分配到集群中的同一個節點。

(在map與reduce這兩個階段之間還有一個partitioner階段)


在mapreduce中value的類型必須為Writable類或者WritableComparable<T>接口的子類

key的類型必須為WritableComparable類的子類。

WritableComparable類為Writable和java.lang.Comparable<T>的子類,這是因為key在reduce階段會被分類,而value隻是簡單的傳遞罷了。

一個實例類繼承了WritableComparable<T>接口

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

import org.apache.hadoop.io.WritableComparable;

public class Edge implements WritableComparable<Edge> {

	private String departureNode;
	private String arrivalNode;

	public String getDepartureNode() {
		return this.departureNode;
	}

	@Override
	public void write(DataOutput out) throws IOException {
		// TODO Auto-generated method stub
		out.writeUTF(departureNode);
		out.writeUTF(arrivalNode);
	}

	@Override
	public void readFields(DataInput in) throws IOException {
		// TODO Auto-generated method stub
		departureNode = in.readUTF();
		arrivalNode = in.readLine();
	}

	@Override
	public int compareTo(Edge o) {
		// TODO Auto-generated method stub
		return (departureNode.compareTo(o.departureNode) != 0) ? departureNode
				.compareTo(o.departureNode) : arrivalNode
				.compareTo(o.arrivalNode);
	}

}

Edge類有可能代表的是兩座城市之間的航線。



最後更新:2017-04-04 07:03:48

  上一篇:go cf 167.div2 E.Dima and Horses
  下一篇:go android 實現應用起動界麵上有一層透明的功能指導界麵