code: def _parse_sparkml_pipeline(topology, model, all_outputs):
      """
      The basic ideas of Spark-ML parsing:
          1. Sequentially go though all stages defined in the considered
             Spark-ML pipeline passing all outputs that has been generated so far
             as the input. Operator will pick which inputs to operates on.
          2. The output variables of one stage will be fed into its next
             stage as the inputs.
      :param topology: Topology object defined in _topology.py
      :param model: Spark-ML pipeline object
      :param all_outputs: A list of Variable objects
      :return: A list of output variables produced by the input pipeline
      """
      for step in model.stages:
          current_op_outputs, all_outputs = _parse_sparkml_api(
              topology, step, all_outputs
          )
      return current_op_outputs, all_outputs
  
imports: from collections import OrderedDict
  from copy import deepcopy
  import pprint
  from uuid import uuid4
  import numpy
  from onnxconverter_common.optimizer import LinkedNode, _topological_sort
  from sklearn import pipeline
  from sklearn.compose import ColumnTransformer
  from sklearn.ensemble import BaggingClassifier, BaggingRegressor
  from sklearn.model_selection import GridSearchCV, RandomizedSearchCV
  from sklearn.multioutput import MultiOutputRegressor, RegressorChain
  from sklearn.preprocessing import OneHotEncoder
  from .containers import CommonSklearnModelContainer, CommonONNXModelContainer, CommonSparkMLModelContainer
  from ._topology import Topology
  from ._utils import sklearn_installed, sparkml_installed
  from .operator_converters import constants
  from .supported import get_sklearn_api_operator_name, get_onnxml_api_operator_name, get_sparkml_api_operator_name
label_desc: Use image node_id 9 for calling a global function with example usage: _parse_sparkml_pipeline(topology, model, all_outputs) and returns: current_op_outputs,  all_outputs