code: protected boolean configureInputAndOutputPaths(Job job, FileSystemDataset dataset) throws IOException {
      boolean emptyDirectoryFlag = false;
  
      String mrOutputBase = this.state.getProp(MRCompactor.COMPACTION_JOB_DIR);
      CompactionPathParser parser = new CompactionPathParser(this.state);
      CompactionPathParser.CompactionParserResult rst = parser.parse(dataset);
      this.mrOutputPath = concatPaths(mrOutputBase, rst.getDatasetName(), rst.getDstSubDir(), rst.getTimeString());
  
      log.info("Cleaning temporary MR output directory: " + mrOutputPath);
      this.fs.delete(mrOutputPath, true);
  
      this.mapReduceInputPaths = getGranularInputPaths(dataset.datasetRoot());
      if (this.mapReduceInputPaths.isEmpty()) {
        this.mapReduceInputPaths.add(dataset.datasetRoot());
        emptyDirectoryFlag = true;
      }
  
      for (Path path : mapReduceInputPaths) {
        FileInputFormat.addInputPath(job, path);
      }
  
      FileOutputFormat.setOutputPath(job, mrOutputPath);
      return emptyDirectoryFlag;
    }
docs: Refer to MRCompactorAvroKeyDedupJobRunner#configureInputAndOutputPaths(Job).
  @return false if no valid input paths present for MR job to process,  where a path is valid if it is
  a directory containing one or more files.