0

我正在定义一个自定义可写类型,目前我有这样的东西:

public static class MyType implements Writable {
  private int value1;
  private String value2;

  // ... override code etc 
}

我应该使用整数和字符串还是应该使用 intWritable 和 Text?我看到的示例倾向于使用我采用的方法,但是使用 Writable 类型似乎可以提高效率。

4

3 回答 3

1

这很好,因为您正在通过覆盖读写来进行序列化。您可以编写原语,如ints使用readInt()orwriteInt()等​​与其他原语或字符串。

Text例如主要用于有LongWritables一些可以使用的内置类型。如果您需要组合对象,则可以使用原语非常好,Text或者LongWritable只是一种可序列化的包装器。

于 2012-07-03T08:08:25.203 回答
1

您可以使用 int、string 等。这很好。并且当您实现 Writable 时,您将需要覆盖readFields(DataInput in)write(DataOutput out)方法。您将需要以相同的顺序读取写入变量。这就是序列化发生的地方。而且您无需费心制作可写类型的变量。

于 2012-07-03T09:09:19.427 回答
-1

我倾向于编写像 Text 这样的 Writables,因为在这些类中已经对 I/O 进行了一些重要的优化。但是,最好的办法是两种方式都尝试一下,看看哪一种表现更好。

于 2012-07-03T08:13:19.917 回答