sunjincheng created BEAM-7947:
---------------------------------

             Summary: Improves the interfaces of classes such as FnDataService, 
BundleProcessor, ActiveBundle, etc to change the parameter type from 
WindowedValue<T> to T
                 Key: BEAM-7947
                 URL: https://issues.apache.org/jira/browse/BEAM-7947
             Project: Beam
          Issue Type: Sub-task
          Components: java-fn-execution
    Affects Versions: 2.14.0
            Reporter: sunjincheng
            Assignee: sunjincheng


Both `Coder<WindowedValue<T>>` and `FnDataReceiver<WindowedValue<T>>` use 
`WindowedValue` as the data structure that both sides of Runner and SDK Harness 
know each other. Control Plane/Data Plane/State Plane/Logging is a highly 
abstraction, such as Control Plane and Logging, these are common requirements 
for all multi-language platforms. For example, the Flink community is also 
discussing how to support Python UDF, as well as how to deal with docker 
environment. how to data transfer, how to state access, how to logging etc. If 
Beam can further abstract these service interfaces, i.e., interface definitions 
are compatible with multiple engines, and finally provided to other projects in 
the form of class libraries, it definitely will help other platforms that want 
to support multiple languages. Here I am to throw out a minnow to catch a 
whale, take the FnDataService#receive interface as an example, and turn 
`WindowedValue<T>` into `T` so that other platforms can be extended 
arbitrarily, as follows:

{code}
<T> InboundDataClient receive(LogicalEndpoint inputLocation, Coder<T> coder, 
FnDataReceiver<T>> listener);
{code}



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Reply via email to