Skip to content

Commit fd82995

Browse files
authored
GH-2976: Parquet CLI compression commands should accept lowercase compression name (#2977)
1 parent 26febde commit fd82995

File tree

4 files changed

+49
-4
lines changed

4 files changed

+49
-4
lines changed

parquet-cli/src/main/java/org/apache/parquet/cli/commands/RewriteCommand.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.apache.hadoop.fs.FileSystem;
3131
import org.apache.hadoop.fs.Path;
3232
import org.apache.parquet.cli.BaseCommand;
33+
import org.apache.parquet.cli.util.Codecs;
3334
import org.apache.parquet.hadoop.metadata.CompressionCodecName;
3435
import org.apache.parquet.hadoop.rewrite.MaskMode;
3536
import org.apache.parquet.hadoop.rewrite.ParquetRewriter;
@@ -114,7 +115,7 @@ private RewriteOptions buildOptionsOrFail() throws IOException {
114115
}
115116

116117
if (codec != null) {
117-
CompressionCodecName codecName = CompressionCodecName.valueOf(codec);
118+
CompressionCodecName codecName = Codecs.parquetCodec(codec);
118119
builder.transform(codecName);
119120
}
120121

parquet-cli/src/main/java/org/apache/parquet/cli/commands/TransCompressionCommand.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.apache.hadoop.fs.Path;
3131
import org.apache.parquet.HadoopReadOptions;
3232
import org.apache.parquet.cli.BaseCommand;
33+
import org.apache.parquet.cli.util.Codecs;
3334
import org.apache.parquet.hadoop.ParquetFileReader;
3435
import org.apache.parquet.hadoop.ParquetFileWriter;
3536
import org.apache.parquet.hadoop.metadata.CompressionCodecName;
@@ -76,7 +77,7 @@ public int run() throws IOException {
7677

7778
Path inPath = new Path(input);
7879
Path outPath = new Path(output);
79-
CompressionCodecName codecName = CompressionCodecName.valueOf(codec);
80+
CompressionCodecName codecName = Codecs.parquetCodec(codec);
8081

8182
ParquetMetadata metaData = ParquetFileReader.readFooter(getConf(), inPath, NO_FILTER);
8283
MessageType schema = metaData.getFileMetaData().getSchema();

parquet-cli/src/test/java/org/apache/parquet/cli/commands/RewriteCommandTest.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,32 @@ public void testRewriteCommandWithOverwrite() throws IOException {
6767
Assert.assertEquals(0, command.run());
6868
Assert.assertTrue(output.exists());
6969
}
70+
71+
@Test
72+
public void testRewriteCommandWithCompression_GZIP() throws IOException {
73+
File file = parquetFile();
74+
RewriteCommand command = new RewriteCommand(createLogger());
75+
command.inputs = Arrays.asList(file.getAbsolutePath());
76+
File output = new File(getTempFolder(), "converted-1.GZIP.parquet");
77+
command.output = output.getAbsolutePath();
78+
command.codec = "GZIP";
79+
command.setConf(new Configuration());
80+
81+
Assert.assertEquals(0, command.run());
82+
Assert.assertTrue(output.exists());
83+
}
84+
85+
@Test
86+
public void testRewriteCommandWithCompression_gzip() throws IOException {
87+
File file = parquetFile();
88+
RewriteCommand command = new RewriteCommand(createLogger());
89+
command.inputs = Arrays.asList(file.getAbsolutePath());
90+
File output = new File(getTempFolder(), "converted-2.gzip.parquet");
91+
command.output = output.getAbsolutePath();
92+
command.codec = "gzip";
93+
command.setConf(new Configuration());
94+
95+
Assert.assertEquals(0, command.run());
96+
Assert.assertTrue(output.exists());
97+
}
7098
}

parquet-cli/src/test/java/org/apache/parquet/cli/commands/TransCompressionCommandTest.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,32 @@
2727
public class TransCompressionCommandTest extends ParquetFileTest {
2828

2929
@Test
30-
public void testTransCompressionCommand() throws IOException {
30+
public void testTransCompressionCommand_ZSTD() throws IOException {
3131
TransCompressionCommand command = new TransCompressionCommand(createLogger());
3232

3333
command.input = parquetFile().getAbsolutePath();
3434

35-
File output = new File(getTempFolder(), getClass().getSimpleName() + ".converted.parquet");
35+
File output = new File(getTempFolder(), getClass().getSimpleName() + ".converted-1.ZSTD.parquet");
3636
command.output = output.getAbsolutePath();
3737
command.codec = "ZSTD";
3838
command.setConf(new Configuration());
3939

4040
Assert.assertEquals(0, command.run());
4141
Assert.assertTrue(output.exists());
4242
}
43+
44+
@Test
45+
public void testTransCompressionCommand_zstd() throws IOException {
46+
TransCompressionCommand command = new TransCompressionCommand(createLogger());
47+
48+
command.input = parquetFile().getAbsolutePath();
49+
50+
File output = new File(getTempFolder(), getClass().getSimpleName() + ".converted-2.zstd.parquet");
51+
command.output = output.getAbsolutePath();
52+
command.codec = "zstd";
53+
command.setConf(new Configuration());
54+
55+
Assert.assertEquals(0, command.run());
56+
Assert.assertTrue(output.exists());
57+
}
4358
}

0 commit comments

Comments
 (0)