实现自定义Hadoop密钥类型和值类型

时间:2013-10-31 06:02:42

标签: hadoop mapreduce writable

我想将keyvalue作为custom datatype发出。

我是否应该为密钥和值实现2 classes

一个KeyWritable implements WritableComparable

另一个

ValueWritable implements Writable

是那样还是一个

WritableComparable足以支持emiting custom key and value

3 个答案:

答案 0 :(得分:0)

如果您的密钥不是自定义对象且它只是文本或字符串值,则无需单独编写KeyWritable。

答案 1 :(得分:0)

如果要为键和值使用相同的类,那么只需要编写一个实现WritableComparable接口的自定义类。

实现WritableComparable接口的类可用于Key和Value。这意味着您的新自定义类也将是Writable和Comparable。

WritableComparable的超级接口是Writable和Comparable。

请验证this

答案 2 :(得分:0)

在Hadoop中,要用作密钥的每种数据类型都必须实现WritableComparable接口或更方便WritableComparable接口,并且要用作值的每种数据类型都必须实现{ {1}}界面。

如果您的自定义键和值属于同一类型,那么您可以编写一个实现Writable接口的自定义数据类型。如果您的自定义键类型与自定义值类型不同,则必须编写两个单独的自定义数据类型,其中自定义键类实现WritableComparable接口和自定义值类实现WritableComparable接口。请注意,通常开发人员在编写自定义数据类型时倾向于使用Writable接口,因为它们可以互换地用作自定义键和自定义值。 HTH