On Wed, Jun 12, 2019 at 3:46 PM Robert Bradshaw <rober...@google.com> wrote:

> On Tue, Jun 11, 2019 at 8:04 PM Kenneth Knowles <k...@apache.org> wrote:
>
>>
>> I believe the schema registry is a transient construction-time concept. I
>> don't think there's any need for a concept of a registry in the portable
>> representation.
>>
>> I'd rather urn:beam:schema:logicaltype:javasdk not be used whenever one
>>> has (say) a Java POJO as that would prevent other SDKs from "understanding"
>>> it as above (unless we had a way of declaring it as "just an
>>> alias/wrapper").
>>>
>>
>> I didn't understand the example I snipped, but I think I understand your
>> concern here. Is this what you want? (a) something presented as a POJO in
>> Java (b) encoded to a row, but still decoded to the POJO and (c) non-Java
>> SDK knows that it is "just a struct" so it is safe to mess about with or
>> even create new ones. If this is what you want it seems potentially useful,
>> but also easy to live without. This can also be done entirely within the
>> Java SDK via conversions, leaving no logical type in the portable pipeline.
>>
>
> I'm imaging a world where someone defines a PTransform that takes a POJO
> for a constructor, and consumes and produces a POJO, and is now usable from
> Go with no additional work on the PTransform author's part.  But maybe I'm
> thinking about this wrong and the POJO <-> Row conversion is part of
> the @ProcesssElement magic, not encoded in the schema itself.
>

The user's output would have to be explicitly schema. They would somehow
have to tell Beam the infer a schema from the output POJO (e.g. one way to
do this is to annotate the POJO with the @DefaultSchema annotation).  We
don't currently magically turn a POJO into a schema unless we are asked to
do so.

Reply via email to