Генерировать схему avsc avro из класса case scala при сборке

Я хочу создать схему avro из класса case scala.

Предположим, у меня есть следующий класс scala case:

case class User(name : String, favorite_number: Int, favorite_color: String)

Связанная схема avro:

{"namespace": "example.avro",
 "type": "record",
 "name": "User",
 "fields": [
     {"name": "name", "type": "string"},
     {"name": "favorite_number",  "type": "int"},
     {"name": "favorite_color", "type": "string"}
 ]
}

Есть ли способ сгенерировать во время сборки avro schema? используя sbt, например? Я видел sbt-avro4s, который позволяет построить класс scala из схемы avro, но мне нужно сделать обратное.

Заранее спасибо за помощь

Вы можете написать свой собственный SBT задача _, используя общий вывод Бесформенный, это вполне возможно... но поначалу это будет нелегко, потому что вам придется многому научиться - это может помочь вам начать работу. _Отказ от ответственности: Я никогда не делал ничего подобного до (хотя хочу сделать в ближайшее время), поэтому я не могу вам помочь, но я знаю, что это можно сделать таким образом.

Luis Miguel Mejía Suárez 31.01.2019 16:25

Никогда не делал этого раньше, у вас есть пример, пожалуйста?

dnej 31.01.2019 16:28

Как я уже сказал, я тоже этого не делал, так что у меня нет игрушечного примера... Однако я знаю, что Circe-genericупаковка использует Бесформенный для автоматического получения кейс-классы, но я не уверен, что это подходящее место для Начало. В книге они предоставляют пример общего вывода классов типов для типов продуктов, использующих HList, что похоже на то, что вы хотите.

Luis Miguel Mejía Suárez 31.01.2019 16:58

Спасибо за Ваш ответ. Я попробую это.

dnej 31.01.2019 18:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
2 234
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Avro4s содержит логику для создания схемы Avro из case class.

https://github.com/sksamuel/avro4s#schemas

По примеру проекта:

import com.sksamuel.avro4s.AvroSchema

case class User(name : String, favorite_number: Int, favorite_color: String)
val userSchema = AvroSchema[User]

Надеюсь, этого достаточно, чтобы начать работу над задачей sbt, если это необходимо.

Ты прав ! Я никогда не писал задачи sbt. Я сделаю некоторые recherches и дам вам знать. Спасибо !

dnej 31.01.2019 23:47

Как можно сохранить схему avsc, добавив задачу sbt? Я нашел только простые примеры с hello world или что-то в этом роде. Можно ли это сделать в build.sbt?

dnej 01.02.2019 00:21

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