我想将key
和value
作为custom datatype
发出。
我是否应该为密钥和值实现2 classes
?
一个KeyWritable implements WritableComparable
和
另一个
ValueWritable implements Writable
。
是那样还是一个
WritableComparable
足以支持emiting custom key and value
。
答案 0 :(得分:0)
如果您的密钥不是自定义对象且它只是文本或字符串值,则无需单独编写KeyWritable。
答案 1 :(得分:0)
如果要为键和值使用相同的类,那么只需要编写一个实现WritableComparable接口的自定义类。
实现WritableComparable接口的类可用于Key和Value。这意味着您的新自定义类也将是Writable和Comparable。
WritableComparable的超级接口是Writable和Comparable。
请验证this
答案 2 :(得分:0)
在Hadoop中,要用作密钥的每种数据类型都必须实现Writable
和Comparable
接口或更方便WritableComparable
接口,并且要用作值的每种数据类型都必须实现{ {1}}界面。
如果您的自定义键和值属于同一类型,那么您可以编写一个实现Writable
接口的自定义数据类型。如果您的自定义键类型与自定义值类型不同,则必须编写两个单独的自定义数据类型,其中自定义键类实现WritableComparable
接口和自定义值类实现WritableComparable
接口。请注意,通常开发人员在编写自定义数据类型时倾向于使用Writable
接口,因为它们可以互换地用作自定义键和自定义值。 HTH