티스토리 뷰
728x90
object AvroUtils {
private const val PATH = "/avsc"
private val parser = Schema.Parser()
fun define(name: String): Schema {
return parser.parse(
AvroUtils.javaClass
.getResourceAsStream("${PATH}/${name}.avsc")
)
}
fun convert(schema: Schema, json: String): GenericRecord {
val reader: DatumReader<GenericData.Record> = GenericDatumReader(schema)
val decoder: Decoder = DecoderFactory().jsonDecoder(schema, json)
return reader.read(null, decoder)
}
fun convert(record: GenericRecord): ByteArray? {
return toBytes(record)
}
@Throws(IOException::class)
private fun toBytes(genericRecord: GenericRecord): ByteArray? {
ByteArrayOutputStream().use { outputStream ->
val writer: DatumWriter<GenericContainer> = GenericDatumWriter(genericRecord.schema)
writer.setSchema(genericRecord.schema)
val encoder: BinaryEncoder = EncoderFactory.get().binaryEncoder(outputStream, null)
writer.write(genericRecord, encoder)
encoder.flush()
return outputStream.toByteArray()
}
}
}
resources/avsc/data-api.avsc
https://seongtak-yoon.tistory.com/27
https://stackoverflow.com/questions/20389255/reading-a-resource-file-from-within-jar
https://toolslick.com/generation/metadata/avro-schema-from-json
728x90
'공부' 카테고리의 다른 글
[Shell] concat string arrays (0) | 2022.06.20 |
---|---|
[java] org.apache.commons.lang3.CharEncoding.UTF_8 (0) | 2022.06.20 |
[kotlin] merge json (0) | 2022.06.20 |
[Shell]join string array (0) | 2022.06.20 |
[Kotlin] add list + list (0) | 2022.06.19 |
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 개리마커스
- 테슬라 레퍼럴
- 테슬라 리퍼럴 코드
- 테슬라 리퍼럴 코드 혜택
- 테슬라 레퍼럴 코드 확인
- 모델y
- 테슬라 리퍼럴 코드 생성
- 어떻게 능력을 보여줄 것인가?
- Bot
- 연애학개론
- 테슬라 레퍼럴 적용 확인
- 테슬라
- 책그림
- 인스타그램
- 테슬라 크레딧 사용
- COUNT
- 클루지
- wlw
- 김달
- 팔로워 수 세기
- 모델 Y 레퍼럴
- follower
- 할인
- 레퍼럴
- Kluge
- 유투브
- 메디파크 내과 전문의 의학박사 김영수
- 테슬라 추천
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
글 보관함