Возможно, потому, что реализация Writable
предоставит нам сериализуемый объект. Я знаю, что DataInput
и DataOutput
напрямую связаны с байтовыми потоками, но я не вижу вреда в прямом чтении значений от них и хранении его в примитивных типах.Зачем использовать Writable, когда мы можем напрямую использовать DataInput и DataOutput?
Это говорит о том, что использование методов readFields()
и write()
представляется бесполезным и может использоваться только с точки зрения модульности. Создание объектов для DataInput
и DataOutput
классов для переменных экземпляра и непосредственного ввода входов (с использованием DataInput
и 10, как класса утилиты сканера) кажется довольно простым. Насколько я вижу, создание интерфейса для них и реализация этих очевидных методов (будь то в заранее определенных классах ячеек или наших собственных пользовательских классах) выглядят как синтаксический сахар.
Помогите мне разобраться, если есть что-то, что можно увидеть.
ОБНОВЛЕНИЕ: DataInput
и DataOutput
классы производят сериализованные объекты! : О
'Writable' не создает сериализуемые объекты, а также не' DataInput' или 'DataOutput'. Неясно, о чем вы говорите, не говоря уже о том, что вы просите. – EJP
Возможный дубликат [В чем причина Writable ...] (http://stackoverflow.com/q/17203661/207421). – EJP
@EJP Все они делают. [Здесь] (https://acadgild.com/blog/writable-and-writablecomparable-in-hadoop/) и [здесь] (https://www.google.co.in/url?sa=t&rct=j&q= & ESRC = s & источник = веб & кд = 1 & CAD = RJA & uact = 8 & вед = 0ahUKEwiRs4aNkuvNAhUJPxoKHTWgDCEQFggdMAA & URL = HTTPS% 3A% 2F% 2Fhadoop.apache.org% 2Fdocs% 2Fr2.6.1% 2Fapi% 2Forg% 2Fapache% 2Fhadoop% 2Fio% 2FWritable.html & USG = AFQjCNEz5Mh9TeOMqXd8AX74QxlfFMzCzw & Sig2 = 35nxbPRITVf6lfzivGUSjw) , И вопрос вашего второго комментария говорит о чем-то другом. Не просто читать название! –