[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Design review for supporting AutoValue Coders and conversions to Row

Hi Jeff,

I would suggest a slightly different approach. Instead of generating a coder, writing a SchemaProvider that generates a schema for AutoValue. Once a PCollection has a schema, a coder is not needed (as Beam knows how to encode any type with a schema), and it will work seamlessly with Beam SQL (in fact you don't need to write a transform to turn it into a Row if a schema is registered).

We already do this for POJOs and basic JavaBeans. I'm happy to help do this for AutoValue.


On Sat, Nov 10, 2018 at 5:50 AM Jeff Klukas <jklukas@xxxxxxxxxxx> wrote:
Hi all - I'm looking for some review and commentary on a proposed design for providing built-in Coders for AutoValue classes. There's existing discussion in BEAM-1891 [0] about using AvroCoder, but that's blocked on incompatibility between AutoValue and Avro's reflection machinery that don't look resolvable.

I wrote up a design document [1] that instead proposes using AutoValue's extension API to automatically generate a Coder for each AutoValue class that users generate. A similar technique could be used to generate conversions to and from Row for use with BeamSql.

I'd appreciate review of the design and thoughts on whether this seems feasible to support within the Beam codebase. I may be missing a simpler approach.