Реализация пользовательского типа ключа Hadoop и типа Value
Я хочу излучать key
а также value
как custom datatype
,
должен ли я реализовать 2 classes
для ключа и значения?
один KeyWritable implements WritableComparable
а также
другой
ValueWritable implements Writable
,
Это так или один
WritableComparable
достаточно для emiting custom key and value
,
3 ответа
Если вы хотите использовать тот же класс для своего ключа и значения, то вам нужно написать только один пользовательский класс, который реализует интерфейс WritableComparable.
Класс, который реализует интерфейс WritableComparable, может использоваться для Key и Value. Это означает, что ваш новый пользовательский класс также будет доступен для записи и сравнения.
Суперинтерфейсы WritableComparable доступны для записи и сравнения.
Пожалуйста, подтвердите это
В Hadoop каждый тип данных, который будет использоваться в качестве ключей, должен реализовывать Writable
а также Comparable
интерфейсы или более удобно WritableComparable
интерфейс, и каждый тип данных, который будет использоваться в качестве значений, должен реализовывать Writable
интерфейс.
Если ваш пользовательский ключ и значение имеют одинаковый тип, то вы можете написать один пользовательский тип данных, который реализует WritableComparable
интерфейс. Если ваш пользовательский тип ключа отличается от вашего пользовательского типа значения, вам придется написать два отдельных пользовательских типа данных, где реализуется класс пользовательских ключей. WritableComparable
реализует интерфейс и пользовательский класс значений Writable
интерфейс. Обратите внимание, что обычно разработчики склонны использовать WritableComparable
интерфейс, когда они пишут пользовательские типы данных, так как они могут взаимозаменяемо использовать в качестве пользовательских ключей и пользовательских значений. НТН
Нет необходимости писать KeyWritable отдельно, если ваш ключ не пользовательский объект, а только текстовое или строковое значение.