private RewriteOptions buildOptionsOrFail()

in parquet-cli/src/main/java/org/apache/parquet/cli/commands/RewriteCommand.java [89:132]


  private RewriteOptions buildOptionsOrFail() throws IOException {
    Preconditions.checkArgument(
        inputs != null && !inputs.isEmpty() && output != null,
        "Both input and output parquet file paths are required.");

    List<Path> inputPaths = new ArrayList<>();
    for (String input : inputs) {
      inputPaths.add(new Path(input));
    }
    Path outputPath = new Path(output);

    // The builder below takes the job to validate all input parameters.
    RewriteOptions.Builder builder = new RewriteOptions.Builder(getConf(), inputPaths, outputPath);

    // Mask columns if specified.
    if (maskMode != null && maskMode.equals("nullify") && maskColumns != null && !maskColumns.isEmpty()) {
      Map<String, MaskMode> maskModeMap = new HashMap<>();
      for (String maskColumn : maskColumns) {
        maskModeMap.put(maskColumn, MaskMode.NULLIFY);
      }
      builder.mask(maskModeMap);
    }

    // Prune columns if specified.
    if (pruneColumns != null && !pruneColumns.isEmpty()) {
      builder.prune(pruneColumns);
    }

    if (codec != null) {
      CompressionCodecName codecName = Codecs.parquetCodec(codec);
      builder.transform(codecName);
    }

    RewriteOptions options = builder.build();

    // If RewriteOptions are successfully built and the overwrite option is specified, remove the output path
    FileSystem outFS = outputPath.getFileSystem(getConf());
    if (overwrite && outFS.exists(outputPath)) {
      console.debug("Deleting output file {} (already exists)", outputPath);
      outFS.delete(outputPath);
    }

    return options;
  }