godfreyhe commented on issue #9433: [FLINK-13708] [table-planner-blink] 
transformations should be cleared after execution in blink planner
URL: https://github.com/apache/flink/pull/9433#issuecomment-521495049
 
 
   > I have a bit different question. Why `ExecutorBase` buffers the 
transformations in the first place? It violates the contract of 
`Executor#apply`. The assumption is that apply method will really apply the 
transformations to the `ExecutionEnvironment` that was provided. We do the 
buffering in the `TableEnvironmentImpl` already.
   > 
   > The way it is implemented right now. Such program, which is a valid 
program will produce no results:
   > 
   > ```
   > StreamExecutionEnvironment senv = ...
   > StreamTableEnvironment tEnv = StreamTableEnvirornment.create(senv)
   > tEnv.sql(...)
   > senv.execute();
   > ```
   
   different from the implementation of `StreamExecutor` in flink planner, 
`Executors` in blink planner will generate `StreamGraph` first and execute the 
stream graph directly. `StreamExecutor` in blink planner should buffer the 
transformations to generate a whole `StreamGraph` (`StreamGraph` does not 
support merge now) if the operation translation is eager (using 
`StreamTableEnvirornment`). To unify the implementation for batch and stream 
executor, we defined a buffered transformations in `ExecutorBase`.
   
   one approach to avoid buffering transformations is `StreamExecutor` in blink 
planer does not generate `StreamGraph` any more, and keep the same 
implementation as StreamExecutor` in flink planner. and `BatchExecutor` 
generate `StreamGraph` in `apply` method

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to