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;
}