class_docstr: An operand for shuffle execution which partitions data by the value in each record’s partition key, and
  send the partitioned data from all mappers to all reducers.
class_docstr_tok: ["An","operand","for","shuffle","execution","which","partitions","data","by","the","value","in","each","record","\u2019","s","partition","key",",","and","send","the","partitioned","data","from","all","mappers","to","all","reducers","."]
code: def iter_mapper_data(
      self, ctx, input_id=0, pop=False, skip_none=False
  ):
      for key in self.iter_mapper_keys(input_id):
          try:
              if pop:
                  yield ctx.pop((key, self.reducer_index))
              else:
                  yield ctx[key, self.reducer_index]
          except KeyError:
              if not skip_none:  # pragma: no cover
                  raise
              if not pop:
                  ctx[key, self.reducer_index] = None
  
file_path: mars/mars/core/operand/shuffle.py
imports: from .None import ShuffleFetchType, FetchShuffle
  from ...None import opcodes
  from ...serialization.serializables import Int32Field, StringField, TupleField, FieldTypes
  from .base import Operand, VirtualOperand, OperandStage
label_desc: Use image node_id 5 for calling the MapReduceOperand obj's underlying member method code with example usage: obj.iter_mapper_data(ctx, input_id, pop, skip_none) without return types