def _parse_sparkml_pipeline(spark, scope, model, global_inputs, output_dict):
    '''
    The basic ideas of spark-ml parsing:
        1. Sequentially go though all stages defined in the considered spark-ml pipeline
        2. The output variables of one stage will be fed into its next stage as the inputs.

    :param scope: Scope object defined in _topology.py
    :param model: spark-ml pipeline object
    :param global_inputs: A list of Variable objects
    :param output_dict: An accumulated list of output_original_name->(ref_count, variable)
    :return: A list of output variables produced by the input pipeline
    '''
    for stage in model.stages:
        _parse_sparkml(spark, scope, stage, global_inputs, output_dict)