Реализация пользовательского типа ключа 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 отдельно, если ваш ключ не пользовательский объект, а только текстовое или строковое значение.

Другие вопросы по тегам