public BypassMergeSortShuffleWriter(
     SparkConf conf,
     BlockManager blockManager,
     Partitioner partitioner,
     ShuffleWriteMetrics writeMetrics,
     Serializer serializer) {
   // Use getSizeAsKb (not bytes) to maintain backwards compatibility if no units are provided
   this.fileBufferSize = (int) conf.getSizeAsKb("spark.shuffle.file.buffer", "32k") * 1024;
   this.transferToEnabled = conf.getBoolean("spark.file.transferTo", true);
   this.numPartitions = partitioner.numPartitions();
   this.blockManager = blockManager;
   this.partitioner = partitioner;
   this.writeMetrics = writeMetrics;
   this.serializer = serializer;
 }
 public UnsafeExternalSorter(
     TaskMemoryManager memoryManager,
     ShuffleMemoryManager shuffleMemoryManager,
     BlockManager blockManager,
     TaskContext taskContext,
     RecordComparator recordComparator,
     PrefixComparator prefixComparator,
     int initialSize,
     SparkConf conf)
     throws IOException {
   this.memoryManager = memoryManager;
   this.shuffleMemoryManager = shuffleMemoryManager;
   this.blockManager = blockManager;
   this.taskContext = taskContext;
   this.recordComparator = recordComparator;
   this.prefixComparator = prefixComparator;
   this.initialSize = initialSize;
   // Use getSizeAsKb (not bytes) to maintain backwards compatibility for units
   this.fileBufferSizeBytes = (int) conf.getSizeAsKb("spark.shuffle.file.buffer", "32k") * 1024;
   initializeForWriting();
 }