Skip to content

[Compiler Refactor 1] Introduce refactored OpExecConfig#1791

Merged
zuozhiw merged 3 commits into
masterfrom
zuozhi-exec-config
Jan 16, 2023
Merged

[Compiler Refactor 1] Introduce refactored OpExecConfig#1791
zuozhiw merged 3 commits into
masterfrom
zuozhi-exec-config

Conversation

@zuozhiw
Copy link
Copy Markdown
Contributor

@zuozhiw zuozhiw commented Jan 13, 2023

This PR is part of the efforts to refactor the workflow compiler layer.

This PR introduces a new class, NewOpExecConfig, which captures all the information related to a physical operator. This class will replace the existing OpExecConfig and WorkerLayer in the future.

Copy link
Copy Markdown
Contributor

@shengquan-ni shengquan-ni left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@zuozhiw zuozhiw merged commit 458fbd4 into master Jan 16, 2023
@zuozhiw zuozhiw deleted the zuozhi-exec-config branch January 16, 2023 22:16
@zuozhiw zuozhiw changed the title Introduce refactored OpExecConfig [Compiler Refactor #1] Introduce refactored OpExecConfig Jan 18, 2023
zuozhiw added a commit that referenced this pull request Jan 19, 2023
…pport new OpExecConfig interface (#1796)

This PR is a follow-up of #1791 , where a new `OpExecConfig` interface
is introduced for the new workflow compiler layer. This PR changes the
`OperatorDescriptor` interface to use the new `OpExecConfig`. Currently,
the old and new interfaces exist in parallel. After all migrations are
completed, the old interface will be removed.

New interfaces:
```
  def newOperatorExecutor(operatorSchemaInfo: OperatorSchemaInfo): NewOpExecConfig = {
    throw new UnsupportedOperationException(
      "operator " + operatorIdentifier + " is not migrated to new OpExec API"
    )
  }

  // a logical operator corresponds multiple physical operators (a small DAG)
  def operatorExecutorMultiLayer(operatorSchemaInfo: OperatorSchemaInfo): PhysicalPlan = {
    new PhysicalPlan(List(newOperatorExecutor(operatorSchemaInfo)), List())
```

Logical operators that correpond to a single physical operator will
implement `newOperatorExecutor` interface.
Logical operators that correpond to a **multiple** physical operator
(such as aggregate) will implement `operatorExecutorMultiLayer`
interface.
@zuozhiw zuozhiw changed the title [Compiler Refactor #1] Introduce refactored OpExecConfig [Compiler Refactor 1] Introduce refactored OpExecConfig Jan 19, 2023
zuozhiw added a commit that referenced this pull request Jan 31, 2023
…onfig class (#1794)

This PR is a follow up of #1791 . In #1791 a new `OpExecConfig` class is
introduced. This PR updates the simple operators that are mostly
one-to-one to use the new class. Most changes are one-line changes that
directly map from the old API to the new API. Changes to more
complicated operators (join, aggregate, etc..) will be completed in
subsequent PRs.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants