Make side inputs a map, rather than embedding the name in the message. The "local" name only make sense in context.
Project: http://git-wip-us.apache.org/repos/asf/beam/repo Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/2d59b10f Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/2d59b10f Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/2d59b10f Branch: refs/heads/master Commit: 2d59b10f90bfaa1c455dee1545504d9da74a9163 Parents: 61e31e6 Author: Robert Bradshaw <rober...@gmail.com> Authored: Mon Feb 27 17:59:57 2017 -0800 Committer: Robert Bradshaw <rober...@gmail.com> Committed: Tue Feb 28 14:39:34 2017 -0800 ---------------------------------------------------------------------- .../src/main/proto/beam_runner_api.proto | 25 +++++++------------- 1 file changed, 9 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/beam/blob/2d59b10f/sdks/common/runner-api/src/main/proto/beam_runner_api.proto ---------------------------------------------------------------------- diff --git a/sdks/common/runner-api/src/main/proto/beam_runner_api.proto b/sdks/common/runner-api/src/main/proto/beam_runner_api.proto index 258c278..58532b2 100644 --- a/sdks/common/runner-api/src/main/proto/beam_runner_api.proto +++ b/sdks/common/runner-api/src/main/proto/beam_runner_api.proto @@ -215,10 +215,9 @@ message ParDoPayload { // (may force runners to execute the ParDo differently) repeated Parameter parameters = 2; - // (Optional) An ordered list of side inputs, describing for each local name - // to the data to be provided and the expected access pattern. - // (the SDK may not be order-sensitive) - repeated SideInput side_inputs = 3; + // (Optional) A mapping of local input names to side inputs, describing + // the expected access pattern. + map<string, SideInput> side_inputs = 3; // (Optional) if the DoFn uses state, a list of the specs for cells. repeated StateSpec state_specs = 4; @@ -298,10 +297,9 @@ message CombinePayload { // (may force runners to execute the ParDo differently) repeated Parameter parameters = 3; - // (Optional) An ordered list of side inputs, describing for each local name - // to the data to be provided and the expected access pattern. - // (the SDK may not be order-sensitive) - repeated SideInput side_inputs = 4; + // (Optional) A mapping of local input names to side inputs, describing + // the expected access pattern. + map<string, SideInput> side_inputs = 4; } // A coder, the binary format for serialization and deserialization of data in @@ -575,11 +573,6 @@ message TimestampTransform { // A specification for how to "side input" a PCollection. message SideInput { - - // (Required) A local name for this side input, as interpreted by its - // parent PTransform (and/or its PTransform's UDFs). - string name = 1; - // (Required) URN of the access pattern required by the `view_fn` to present // the desired SDK-specific interface to a UDF. // @@ -589,14 +582,14 @@ message SideInput { // The only access pattern intended for Beam, because of its superior // performance possibilities, is "urn:beam:sideinput:multimap" (or some such // URN) - UrnWithParameter access_pattern = 3; + UrnWithParameter access_pattern = 1; // (Required) The pipeline-scoped id for the FunctionSpec of the UDF that // adapts a particular access_pattern to a user-facing view type. // // For example, View.asSingleton() may include a `view_fn` that adapts a // specially-designed multimap to a single value per window. - string view_fn_id = 4; + string view_fn_id = 2; // (Required) The pipeline-scoped id for the FunctionSpec of the UDF that // maps a main input window to a side input window. @@ -604,7 +597,7 @@ message SideInput { // For example, when the main input is in fixed windows of one hour, this // can specify that the side input should be accessed according to the day // in which that hour falls. - string window_mapping_fn_id = 5; + string window_mapping_fn_id = 3; } // An environment for executing UDFs. Generally an SDK container URL, but