-
Notifications
You must be signed in to change notification settings - Fork 60
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added serde customization support in Fast-Avro
We have the following requirements: For serialization, we would like to validate whether all the map fields are using the desired map type. For deserialization, we would like to deserialize the map type into a special map impelementation for later use. These customized requirements are not supported in the past because of the following reasons: 1. Fast classes generated are shared, so it is possible different users of the same schema may have different requirement. 2. For the same process, for different schema, the requirements can be different too. 3. No way to specify customized logic/data type when generating fast classes. This PR adds a new functionality to specify customized logic and it is expandable and backward compatible. DatumReaderCustomization : customization for read DatumWriterCustomization : customization for write Currently, these classes only support the requirements mentioned at the beginning. How it works internally? 1. Each Fast DatumReader/DatumWriter constructor will take a new param for customization. 2. Each Fast DatumReader/DatumWriter will keep a local vanilla-Avro based implementation with customization support since the shared vanilla-Avro based implementation is still the default implementation. 3. Each generated Fast class will have a new param for customization in serialize/deserialize APIs. 4. Fast DatumReader/DatumWriter will call this new API with customization param of Fast classes. 5. The read/write API in Fast DatumReader/DatumWriter doesn't change, so it is backward compatible.
- Loading branch information
Showing
23 changed files
with
862 additions
and
262 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.