beam-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kenneth Knowles (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (BEAM-233) Make Registering Avro Specific Records Easier
Date Tue, 03 May 2016 16:49:13 GMT

    [ https://issues.apache.org/jira/browse/BEAM-233?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15269047#comment-15269047
] 

Kenneth Knowles edited comment on BEAM-233 at 5/3/16 4:48 PM:
--------------------------------------------------------------

This makes good sense in the event that you have a {{SpecificRecord}} implementation in a
third party library, where you cannot annotate with {{@DefaultCoder(AvroCoder.class)}}. In
general, we should make sure that things we can do with annotations are also easy to do programmatically,
unless it is infeasible.

For this, I believe a natural approach would be to add an overload {{CoderRegistry#registerCoder(Class<?>,
CoderProvider)}} with  the behavior that [~eljefe6aa]] suggests.


was (Author: kenn):
This makes good sense in the event that you have a {{SpecificRecord}} implementation in a
third party library, where you cannot annotate with {{@DefaultCoder(AvroCoder.class)}}. In
general, we should make sure that things we can do with annotations are also easy to do programmatically.

For this, I believe a natural approach would be to add an overload {{CoderRegistry#registerCoder(Class<?>,
CoderProvider)}} with  the behavior that [~eljefe6aa]] suggests.

> Make Registering Avro Specific Records Easier
> ---------------------------------------------
>
>                 Key: BEAM-233
>                 URL: https://issues.apache.org/jira/browse/BEAM-233
>             Project: Beam
>          Issue Type: Bug
>          Components: sdk-java-core
>            Reporter: Jesse Anderson
>            Assignee: Kenneth Knowles
>
> There should be a helper method to make it easier to register Avro specific record classes.
This will be the most common type that needs to be registered. The code would look something
like:
> {code:java}
> public class AvroHelper {
>     public static void registerAvro(Pipeline p, Class<? extends SpecificRecordBase>
clazz) {
>         p.getCoderRegistry().registerCoder(clazz, new CoderFactory() {
>             @Override
>             public Coder<?> create(List<? extends Coder<?>> componentCoders)
{
>                 return AvroCoder.of(clazz);
>             }
>             @Override
>             public List<Object> getInstanceComponents(Object value) {
>                 return null;
>             }
>         });
>     }
> }
> {code}
> With usage:
> {code:java}
>         Pipeline p = Pipeline.create(options);
>         
>         AvroHelper.registerAvro(p, LogEntry.class);
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message