Open raulchen opened 1 year ago
The high-level idea is to abstract the above functionalities regarding to op execution in a new class OpExecutor
. This class (along with its helper classes) will include most of the code that is currently in PhysicalOperator
and OpState
. OpState
will be removed. PhysicalOperator
will only need to care "how to handle an input RefBundle". The logic of handling an input RefBundle can be categorized in 2 types:
Other notes:
OpExecutor
, and are orthogonal to ops.
Iterable[Batch] -> Iterable[Batch]
to OpExecutor
. So OpExecutor
is responsible for submitting and managing the tasks.
Today, a lot of common features are implemented separately in each PhysicalOperator subclass. This makes some features missed for certain operator, or some features behave inconsistently.
A non-comprehensive list of such features includes:
We should refactor it with a more unified framework.