class UnshardedExportToCloudStorage extends AbstractExportToCloudStorage {

  @Override
  public List<InputSplit> getSplits(JobContext context) throws IOException, InterruptedException {
    logger.atInfo().log("Setting FileInputFormat's inputPath to '%s'", gcsPath);
    configuration.set(FileInputFormat.INPUT_DIR, gcsPath);

    // Now that the FileInputFormat's path is pointed to the export directory, construct splits
    // using a TextInputFormat instance.
    List<InputSplit> splits = new ArrayList<>();
    for (InputSplit split : delegateInputFormat.getSplits(context)) {
      FileSplit fileSplit = (FileSplit) split;
      splits.add(
          new UnshardedInputSplit(
              fileSplit.getPath(),
              fileSplit.getStart(),
              fileSplit.getLength(),
              fileSplit.getLocations()));
    }
    return splits;
  }

  public  UnshardedExportToCloudStorage(
      Configuration configuration,
      String gcsPath,
      ExportFileFormat fileFormat,
      BigQueryHelper bigQueryHelper,
      String projectId,
      Table tableToExport,
      @Nullable InputFormat<LongWritable, Text> delegateInputFormat);

}