code: def accumulator(self, value, accum_param=None):
          
          if accum_param is None:
              if isinstance(value, int):
                  accum_param = accumulators.INT_ACCUMULATOR_PARAM
              elif isinstance(value, float):
                  accum_param = accumulators.FLOAT_ACCUMULATOR_PARAM
              elif isinstance(value, complex):
                  accum_param = accumulators.COMPLEX_ACCUMULATOR_PARAM
              else:
                  raise TypeError("No default accumulator param for type %s" % type(value))
          SparkContext._next_accum_id += 1
          return Accumulator(SparkContext._next_accum_id - 1, value, accum_param)
docs: Create an L{Accumulator} with the given initial value, using a given
          L{AccumulatorParam} helper object to define how to add values of the
          data type if provided. Default AccumulatorParams are used for integers
          and floating-point numbers if you do not provide one. For other types,
          a custom AccumulatorParam can be used.