code: def __init__(self, db: EvaDBDatabase, node: ExchangePlan):
      self.inner_plan = node.inner_plan
      self.parallelism = node.parallelism
      self.ray_pull_env_conf_dict = node.ray_pull_env_conf_dict
      self.ray_parallel_env_conf_dict = node.ray_parallel_env_conf_dict
      super().__init__(db, node)
  
file_path: evadb/evadb/executor/exchange_executor.py
imports: from typing import Iterator
  from evadb.database import EvaDBDatabase
  from evadb.executor.abstract_executor import AbstractExecutor
  from evadb.executor.executor_utils import ExecutorError
  from evadb.executor.ray_utils import StageCompleteSignal, ray_parallel, ray_pull, ray_wait_and_alert
  from evadb.models.storage.batch import Batch
  from evadb.plan_nodes.exchange_plan import ExchangePlan
label_desc: Use image node_id 1 to create a new ExchangeExecutor object from inherited base classes: AbstractExecutor with example: obj = ExchangeExecutor(db, node)