Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Avro with Java 8 dates as logical type

Tags:

Latest Avro compiler (1.8.2) generates java sources for dates logical types with Joda-Time based implementations. How can I configure Avro compiler to produce sources that used Java 8 date-time API?

like image 244
injecto Avatar asked Aug 16 '17 11:08

injecto


People also ask

What is logical type in Avro schema?

Avro supports logical types. A logical type is defined as a higher level representation for a primitive type. For eg, a higher level type of UUID could be represented as a primitive type string. Similarly, a higher level java. time.

What is Avro conversion?

Introduction to Avro converter. The avro converter allows us to convert the Apache avro object into a favored data format such as JSON, XML, CSV, etc. It has been generated for assisting data conversion and serialization depending on the Apache avro technology.

What is Avro generated class?

AVRO - Serialization By Generating Class. Advertisements. One can read an Avro schema into the program either by generating a class corresponding to a schema or by using the parsers library. This chapter describes how to read the schema by generating a class and Serializing the data using Avr.

What is Avro in Java?

Avro is an open source project that provides data serialization and data exchange services for Apache Hadoop. These services can be used together or independently. Avro facilitates the exchange of big data between programs written in any language.


1 Answers

Currently (avro 1.8.2) this is not possible. It's hardcoded to generate Joda date/time classes.

The current master branch has switched to Java 8 and there is an open issue (with Pull Request) to add the ability to generate classes with java.time.* types.

I have no idea on any kind of release schedule for whatever is currently in master unfortunately. If you feel adventurous you can apply the patch to 1.8.2, since in theory it should all be compatible. The underlying base types when serializing / deserializing are still integers and longs.

like image 159
Auke Avatar answered Sep 21 '22 18:09

Auke