什么平台可以免费推广产品电商seo搜索优化
1、 Writable接口
由于Hadoop的MapReduce和HDFS都有通信的需求,需要对通信的对象进行序列化。Hadoop并没有采用Java的序列化,而是引入了它自己的系统。
org.apache.hadoop.io中定义了大量的可序列化对象,他们都实现了Writable接口。
1.1 Writable接口源码
package org.apache.hadoop.io;import java.io.DataOutput;
import java.io.DataInput;
import java.io.IOException;
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.classification.InterfaceStability;@InterfaceAudience.Public
@InterfaceStability.Stable
public interface Writable {/** * Serialize the fields of this object to <code>out</code>.* */void write(DataOutput out) throws IOException;/** * Deserialize the fields of this object from <code>in</code>. * */void readFields(DataInput in) throws IOException;
}
1.2 自定义Writable实现类
实现了Writable接口的一个典型例子如下,该代码实际上是在Writable接口源码的注释中。
public class MyWritable implements Writable {// Some data private int counter;private long timestamp;public void write(DataOutput out) throws IOException {out.writeInt(counter);out.writeLong(timestamp);}public void readFields(DataInput in) throws IOException {counter = in.readInt();timestamp = in.readLong();}public static MyWritable read(DataInput in) throws IOException {MyWritable w = new MyWritable();w.readFields(in);return w;}}
2 WritableComparable接口
WritableComparable是Writable接口和java.lang.Comparable的一个子接口。
2.1 WritableComparable接口源码
package org.apache.hadoop.io;
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.classification.InterfaceStability;@InterfaceAudience.Public
@InterfaceStability.Stable
public interface WritableComparable<T> extends Writable, Comparable<T> {
}
2.2 WritableComparable一个典型实现类
public class MyWritableComparable implements WritableComparable<MyWritableComparable> {// Some dataprivate int counter;private long timestamp;public void write(DataOutput out) throws IOException {out.writeInt(counter);out.writeLong(timestamp);}public void readFields(DataInput in) throws IOException {counter = in.readInt();timestamp = in.readLong();}public int compareTo(MyWritableComparable o) {int thisValue = this.value;int thatValue = o.value;return (thisValue < thatValue ? -1 : (thisValue==thatValue ? 0 : 1));}public int hashCode() {final int prime = 31;int result = 1;result = prime * result + counter;result = prime * result + (int) (timestamp ^ (timestamp >>> 32));return result}}
2.3 IntWritable
IntWritable实现了WritableComparable。
package org.apache.hadoop.io;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.classification.InterfaceStability;@InterfaceAudience.Public
@InterfaceStability.Stable
public class IntWritable implements WritableComparable<IntWritable> {private int value;public IntWritable() {}public IntWritable(int value) { set(value); }/** Set the value of this IntWritable. */public void set(int value) { this.value = value; }/** Return the value of this IntWritable. */public int get() { return value; }@Overridepublic void readFields(DataInput in) throws IOException {value = in.readInt();}@Overridepublic void write(DataOutput out) throws IOException {out.writeInt(value);}/** Returns true iff <code>o</code> is a IntWritable with the same value. */@Overridepublic boolean equals(Object o) {if (!(o instanceof IntWritable))return false;IntWritable other = (IntWritable)o;return this.value == other.value;}@Overridepublic int hashCode() {return value;}/** Compares two IntWritables. */@Overridepublic int compareTo(IntWritable o) {int thisValue = this.value;int thatValue = o.value;return (thisValue<thatValue ? -1 : (thisValue==thatValue ? 0 : 1));}@Overridepublic String toString() {return Integer.toString(value);}/** A Comparator optimized for IntWritable. */ public static class Comparator extends WritableComparator {public Comparator() {super(IntWritable.class);}@Overridepublic int compare(byte[] b1, int s1, int l1,byte[] b2, int s2, int l2) {int thisValue = readInt(b1, s1);int thatValue = readInt(b2, s2);return (thisValue<thatValue ? -1 : (thisValue==thatValue ? 0 : 1));}}static { // register this comparatorWritableComparator.define(IntWritable.class, new Comparator());}
}