title: Apache Beam/Dataflow Reshuffle
body: <p>What is the purpose of org.apache.beam.sdk.transforms.Reshuffle? In the documentation the purpose is defined as:</p>
  
  <blockquote>
    <p>A PTransform that returns a PCollection equivalent to its input but
    operationally provides some of the side effects of a GroupByKey, in
    particular preventing fusion of the surrounding transforms,
    checkpointing and deduplication by id.</p>
  </blockquote>
  
  <p>What is the benefit of preventing fusion of the surrounding transforms? I thought fusion is an optimization to prevent unnecessarily steps. Actual use case would be helpful. </p>