I agree that adding PipelineOptions is technically (nearly) orthogonal, it is not exactly independent, because the proposal emphasize the need for it. On the other hand, given the complexity of the original proposal, I think that this change is of really low complexity, it might boil down to adding a "repeated string options" field to the ExpansionRequest (or a map, or whatever), and then reading it back during the expansion. I think that taking the opportunity of making a somewhat larger change will be better in this case, because it will instantly enable a broader usage. But - if we want to treat it independly, can we create a tracking Jira for that?

 Jan

On 7/27/21 7:09 PM, Chamikara Jayalath wrote:


On Tue, Jul 27, 2021 at 12:18 AM Jan Lukavský <je...@seznam.cz <mailto:je...@seznam.cz>> wrote:

    Hi Cham,

    I think this approach is great, but what I'm missing is
    PipelineOptions for the expansion. This approach makes it possible
    (and practical) to use single expansion service for many different
    Pipelines and Environments - I can imagine a "single" (logical)
    instance of the expansion service per data team/organisation
    (packaging the expansion service with possibly many dependencies
    might be non-trivial), that means that the expansion might need
    customization that is described precisely by PipelineOptions that
    are passed to the Pipeline that is used for the expansion. Other
    than that this looks great.

Good point. I think that sending in the PipelineOptions as a part of the expansion service is an orthogonal change that can be useful for both config object based and class/type lookup based expansions. So I'd like to consider that separately instead of tying into this work.

Thanks,
Cham

     Jan

    On 7/27/21 6:16 AM, Chamikara Jayalath wrote:


    On Mon, Jul 26, 2021 at 8:26 PM Robert Burke <rob...@frantil.com
    <mailto:rob...@frantil.com>> wrote:

        Looked at it. LGTM

        It looks portable enough to be useful for any future Go SDK
        based Expansion services.

         I do wonder if there are more general names than "class" but
        that's a terminology quibble anyway. (Go doesn't use that
        term, as Go doesn't have inheritance based polymorphism.)
        Perhaps "type" is a good replacement, which is in use in most
        languages in one capacity or another?


    Yeah, probably we can call it "type" and describe what the field
    means for each SDK in a comment.


        Certainly not a hard blocker.



        On Mon, Jul 26, 2021, 7:10 PM Chamikara Jayalath
        <chamik...@google.com <mailto:chamik...@google.com>> wrote:

            Hi All,

            Currently, to define Java cross-language transforms,
            users have to define three new Java classes: a Registrar,
            a Builder and a Config Object [1].

            While this might not be too hard for a Java programmer,
            learning Java and developing/building/releasing new
            classes just to use existing Java transforms may be
            cumbersome for Python and Go users. To further simplify
            the process for defining new Java cross-language
            transforms and usage of such transforms from other SDKs I
            would like to propose an update to the cross-language
            transform expansion protocol.

            Please see the following for details and let me know if
            you have any comments.
            
https://docs.google.com/document/d/1ECXSWicE31K-vSxdb4qL6UcmovOAWvE-ZHFT3NTM654/edit?usp=sharing
            
<https://docs.google.com/document/d/1ECXSWicE31K-vSxdb4qL6UcmovOAWvE-ZHFT3NTM654/edit?usp=sharing>

            Thanks,
            Cham

            [1]
            
https://beam.apache.org/documentation/programming-guide/#create-x-lang-transforms
            
<https://beam.apache.org/documentation/programming-guide/#create-x-lang-transforms>

Reply via email to