我正在定义一个自定义可写类型,目前我有类似的东西:
public static class MyType implements Writable {
private int value1;
private String value2;
// ... override code etc
}
我应该使用int和字符串还是应该使用intWritable和Text?我见过的例子倾向于使用我使用过的方法,但似乎使用Writable类型可以更有效率。
答案 0 :(得分:1)
这很好,因为你通过覆盖读写来进行序列化。您可以使用ints
或readInt()
来编写writeInt()
这样的原语,依此类推其他原语或字符串。
Text
和LongWritables
主要用于拥有一些可以使用的内置类型。如果你需要编写对象,那么使用基元就可以了,Text
或LongWritable
只不过是一种可序列化的包装器。
答案 1 :(得分:1)
你可以使用int,string等。这很好。当您实现Writable时,您需要覆盖readFields(DataInput in)
和write(DataOutput out)
方法。您需要以相同的顺序读取变量。这就是序列化发生的地方。而且你不需要痛苦地制作可写类型的变量。
答案 2 :(得分:-1)
我倾向于像Text一样编写Writable,因为在这些类中已经对I / O进行了一些重要的优化。然而,最好的办法是两种方式尝试,看看哪一种表现更好。