Прошу прощения, если этот вопрос глупо. Мне сложно получить то, что на самом деле означает. Когда я прочитал «Hadoop окончательное руководство», он говорит, что лучшим преимуществом avro является то, что генерация кода является необязательной в Avro. This link имеет программу для сериализации/десериализации avro с/без генерации кода. Может ли кто-нибудь помочь мне в понимании того, что означает/без генерации кода и реального контекста того же.Что означает генерация кода в avro-hadoop
ответ
Это не глупый вопрос - на самом деле это очень важный аспект Avro.
С кода поколения, как правило, означает, что до того компиляции вашего приложения Java, у вас есть Avro схема доступна. Вы, как разработчик, будете использовать компилятор Avro для создания класса для каждой записи в схеме, и вы используете эти классы в своем приложении.
В ссылочной ссылке автор делает это: java -jar avro-tools-1.7.5.jar compile schema student.avsc
, а затем непосредственно использует класс student_marks
.
В этом случае, каждый экземпляр класса student_marks
наследует от SpecificRecord
, с пользовательскими методами для доступа к данным внутри (например, getStudentId()
для извлечения student_id
поля).
Без кода генерация кода обычно означает, что ваше приложение не имеет какой-либо конкретной необходимой схемы (например, оно может обрабатывать разные типы данных).
В этом случае нет класса student
, но вы все равно можете читать записи Avro в контейнере Avro. У вас не будет экземпляров student
, но экземпляры GenericRecord
. Не будет никаких полезных методов, таких как getStudentId()
, но вы можете использовать методы get("student_marks")
или get(0)
.
Часто, используя определенные записи с генерированием кода, легче читать, проще сериализовать и десериализовать, но общие записи обеспечивают большую гибкость, когда точная схема записей, которые вы хотите обработать, во время компиляции неизвестна.
Полезный способ думать об этом - это разница между хранением некоторых данных в полезной рукописной структуре POJO по сравнению с Object[]
. Первое из них гораздо легче разрабатывать, но последнее необходимо, если типы и количество данных являются динамическими или неизвестными.
- 1. Что означает ... в виде кода?
- 2. Что означает следующий анализ кода?
- 3. Генерация кода кода XCode
- 4. Генерация кода тестового кода
- 5. Что означает эта строка кода?
- 6. Что означает эта строка кода?
- 7. Что означает этот фрагмент кода?
- 8. Что означает этот бит кода?
- 9. Что означает эта часть кода?
- 10. Что означает следующий фрагмент кода:
- 11. Что означает эта часть кода?
- 12. Генерация кода в Clojure
- 13. Генерация кода в Eclipse
- 14. Генерация кода в Maven
- 15. Что итерация означает в ActiveMQ исходного кода
- 16. Что означает эта часть кода в PHP?
- 17. Что означает «фрагмент» в обзоре кода?
- 18. Что означает эта часть кода в kernel.h?
- 19. Что означает эта строка кода в JQuery?
- 20. Что (функция() означает в данном сегменте кода
- 21. Что означает знак ++ в программировании кода?
- 22. Что означает значение @ в этом примере кода?
- 23. Что означает этот блок кода в Метеор?
- 24. Что означает параметр кода в EXC_BAD_ACCESS?
- 25. Что означает: означает в php?
- 26. Что означает «$», означает в рубине?
- 27. Что означает * и означает?
- 28. Генерация кода подзвукового кода DAL
- 29. Что означает // **/означает?
- 30. генерация кода IL для Object.Equals