Skip to content

Commit ea06dbd

Browse files
FokkoIsaac
andauthored
GH-3900: Replace Guava with JDK APIs in parquet-cli (#3906)
Now that the minimum JDK is 17, replace Guava collection factories, ImmutableList/ImmutableSet/ImmutableMap, Joiner, Splitter, Objects, MoreObjects and simple Iterables/Predicate/Function usages in parquet-cli with JDK equivalents, and switch Guava Preconditions to org.apache.parquet.Preconditions (all call sites use %s-only messages with matching argument counts) and Objects.requireNonNull. Guava usages without a clean JDK equivalent are kept: Closeables, CharMatcher, Ascii, HashCode, CharStreams, Resources, Iterators.transform and VisibleForTesting. Co-authored-by: Isaac <no-reply@databricks.com>
1 parent 831760d commit ea06dbd

29 files changed

Lines changed: 148 additions & 170 deletions

‎parquet-cli/src/main/java/org/apache/parquet/cli/BaseCommand.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
import com.beust.jcommander.internal.Lists;
2323
import com.google.common.annotations.VisibleForTesting;
24-
import com.google.common.base.Preconditions;
2524
import com.google.common.io.CharStreams;
2625
import com.google.common.io.Resources;
2726
import java.io.File;
@@ -51,6 +50,7 @@
5150
import org.apache.hadoop.fs.LocalFileSystem;
5251
import org.apache.hadoop.fs.Path;
5352
import org.apache.parquet.HadoopReadOptions;
53+
import org.apache.parquet.Preconditions;
5454
import org.apache.parquet.avro.AvroParquetReader;
5555
import org.apache.parquet.avro.AvroReadSupport;
5656
import org.apache.parquet.cli.json.AvroJsonReader;

‎parquet-cli/src/main/java/org/apache/parquet/cli/Help.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import com.beust.jcommander.Parameter;
2525
import com.beust.jcommander.ParameterDescription;
2626
import com.beust.jcommander.Parameters;
27-
import com.google.common.collect.Lists;
27+
import java.util.ArrayList;
2828
import java.util.Arrays;
2929
import java.util.Collections;
3030
import java.util.List;
@@ -33,7 +33,7 @@
3333
@Parameters(commandDescription = "Retrieves details on the functions of other commands")
3434
public class Help implements Command {
3535
@Parameter(description = "<commands>")
36-
List<String> helpCommands = Lists.newArrayList();
36+
List<String> helpCommands = new ArrayList<>();
3737

3838
private final JCommander jc;
3939
private final Logger console;

‎parquet-cli/src/main/java/org/apache/parquet/cli/Main.java‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import com.beust.jcommander.ParameterException;
2525
import com.beust.jcommander.Parameters;
2626
import com.google.common.annotations.VisibleForTesting;
27-
import com.google.common.collect.ImmutableSet;
2827
import java.io.FileInputStream;
2928
import java.io.InputStream;
3029
import java.util.List;
@@ -89,7 +88,7 @@ public class Main extends Configured implements Tool {
8988
@VisibleForTesting
9089
static final String DEFAULT_PROGRAM_NAME = "parquet";
9190

92-
private static Set<String> HELP_ARGS = ImmutableSet.of("-h", "-help", "--help", "help");
91+
private static Set<String> HELP_ARGS = Set.of("-h", "-help", "--help", "help");
9392

9493
private final Logger console;
9594
private final Help help;

‎parquet-cli/src/main/java/org/apache/parquet/cli/Util.java‎

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,9 @@
2929
import static org.apache.parquet.format.Encoding.DELTA_LENGTH_BYTE_ARRAY;
3030

3131
import com.google.common.base.Ascii;
32-
import com.google.common.base.Joiner;
33-
import com.google.common.base.Preconditions;
34-
import com.google.common.base.Splitter;
35-
import com.google.common.collect.Iterables;
3632
import com.google.common.hash.HashCode;
3733
import java.util.Set;
34+
import org.apache.parquet.Preconditions;
3835
import org.apache.parquet.column.ColumnDescriptor;
3936
import org.apache.parquet.column.Encoding;
4037
import org.apache.parquet.column.EncodingStats;
@@ -240,16 +237,14 @@ public static String encodingsAsString(Set<Encoding> encodings, ColumnDescriptor
240237
return sb.toString();
241238
}
242239

243-
private static final Splitter DOT = Splitter.on('.');
244-
245240
public static ColumnDescriptor descriptor(String column, MessageType schema) {
246-
String[] path = Iterables.toArray(DOT.split(column), String.class);
241+
String[] path = column.split("\\.", -1);
247242
Preconditions.checkArgument(schema.containsPath(path), "Schema doesn't have column: %s", column);
248243
return schema.getColumnDescription(path);
249244
}
250245

251246
public static String columnName(ColumnDescriptor desc) {
252-
return Joiner.on('.').join(desc.getPath());
247+
return String.join(".", desc.getPath());
253248
}
254249

255250
public static PrimitiveType primitive(MessageType schema, String[] path) {
@@ -264,7 +259,7 @@ public static PrimitiveType primitive(MessageType schema, String[] path) {
264259
}
265260

266261
public static PrimitiveType primitive(String column, MessageType schema) {
267-
String[] path = Iterables.toArray(DOT.split(column), String.class);
262+
String[] path = column.split("\\.", -1);
268263
Preconditions.checkArgument(schema.containsPath(path), "Schema doesn't have column: %s", column);
269264
return primitive(schema, path);
270265
}

‎parquet-cli/src/main/java/org/apache/parquet/cli/commands/CSVSchemaCommand.java‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,11 @@
2222
import com.beust.jcommander.Parameter;
2323
import com.beust.jcommander.Parameters;
2424
import com.beust.jcommander.internal.Lists;
25-
import com.google.common.base.Preconditions;
26-
import com.google.common.collect.ImmutableSet;
2725
import java.io.IOException;
2826
import java.nio.charset.Charset;
2927
import java.util.List;
3028
import java.util.Set;
29+
import org.apache.parquet.Preconditions;
3130
import org.apache.parquet.cli.BaseCommand;
3231
import org.apache.parquet.cli.csv.AvroCSV;
3332
import org.apache.parquet.cli.csv.CSVProperties;
@@ -101,9 +100,9 @@ public int run() throws IOException {
101100
.charset(charsetName)
102101
.build();
103102

104-
Set<String> required = ImmutableSet.of();
103+
Set<String> required = Set.of();
105104
if (requiredFields != null) {
106-
required = ImmutableSet.copyOf(requiredFields);
105+
required = Set.copyOf(requiredFields);
107106
}
108107

109108
// assume fields are nullable by default, users can easily change this

‎parquet-cli/src/main/java/org/apache/parquet/cli/commands/CatCommand.java‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@
2222

2323
import com.beust.jcommander.Parameter;
2424
import com.beust.jcommander.Parameters;
25-
import com.google.common.base.Preconditions;
26-
import com.google.common.collect.Lists;
2725
import com.google.common.io.Closeables;
2826
import java.io.Closeable;
2927
import java.io.IOException;
28+
import java.util.Arrays;
3029
import java.util.List;
3130
import org.apache.avro.Schema;
3231
import org.apache.avro.SchemaParseException;
32+
import org.apache.parquet.Preconditions;
3333
import org.apache.parquet.cli.BaseCommand;
3434
import org.apache.parquet.cli.util.Expressions;
3535
import org.apache.parquet.example.data.Group;
@@ -150,7 +150,7 @@ private void runWithGroupReader(String source) throws IOException {
150150

151151
@Override
152152
public List<String> getExamples() {
153-
return Lists.newArrayList(
153+
return Arrays.asList(
154154
"# Show the first 10 records in file \"data.avro\":",
155155
"data.avro",
156156
"# Show the first 50 records in file \"data.parquet\":",

‎parquet-cli/src/main/java/org/apache/parquet/cli/commands/CheckParquet251Command.java‎

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,10 @@
2424
import com.beust.jcommander.Parameter;
2525
import com.beust.jcommander.Parameters;
2626
import com.beust.jcommander.internal.Lists;
27-
import com.google.common.base.Predicate;
28-
import com.google.common.collect.Iterables;
2927
import java.io.IOException;
3028
import java.util.Arrays;
3129
import java.util.Comparator;
3230
import java.util.List;
33-
import javax.annotation.Nullable;
3431
import org.apache.hadoop.fs.Path;
3532
import org.apache.parquet.CorruptStatistics;
3633
import org.apache.parquet.Version;
@@ -97,13 +94,11 @@ private String check(String file) throws IOException {
9794

9895
// get just the binary columns
9996
List<ColumnDescriptor> columns = Lists.newArrayList();
100-
Iterables.addAll(
101-
columns, Iterables.filter(meta.getSchema().getColumns(), new Predicate<ColumnDescriptor>() {
102-
@Override
103-
public boolean apply(@Nullable ColumnDescriptor input) {
104-
return input != null && input.getType() == BINARY;
105-
}
106-
}));
97+
for (ColumnDescriptor input : meta.getSchema().getColumns()) {
98+
if (input != null && input.getType() == BINARY) {
99+
columns.add(input);
100+
}
101+
}
107102

108103
// now check to see if the data is actually corrupt
109104
try (ParquetFileReader reader =

‎parquet-cli/src/main/java/org/apache/parquet/cli/commands/ColumnMaskingCommand.java‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@
2323

2424
import com.beust.jcommander.Parameter;
2525
import com.beust.jcommander.Parameters;
26-
import com.google.common.base.Preconditions;
27-
import com.google.common.collect.Lists;
2826
import java.io.IOException;
27+
import java.util.Arrays;
2928
import java.util.List;
3029
import org.apache.hadoop.fs.Path;
3130
import org.apache.parquet.HadoopReadOptions;
31+
import org.apache.parquet.Preconditions;
3232
import org.apache.parquet.cli.BaseCommand;
3333
import org.apache.parquet.hadoop.ParquetFileReader;
3434
import org.apache.parquet.hadoop.ParquetFileWriter;
@@ -109,7 +109,7 @@ public int run() throws IOException {
109109

110110
@Override
111111
public List<String> getExamples() {
112-
return Lists.newArrayList(
112+
return Arrays.asList(
113113
"# Replace columns with masked values and write to a new Parquet file",
114114
"-m nullify -i input.parquet -o output.parquet -c col1_name");
115115
}

‎parquet-cli/src/main/java/org/apache/parquet/cli/commands/ColumnSizeCommand.java‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,17 @@
2121

2222
import com.beust.jcommander.Parameter;
2323
import com.beust.jcommander.Parameters;
24-
import com.google.common.base.Preconditions;
25-
import com.google.common.collect.Lists;
2624
import java.io.IOException;
2725
import java.util.ArrayList;
26+
import java.util.Arrays;
2827
import java.util.HashMap;
2928
import java.util.LinkedHashMap;
3029
import java.util.List;
3130
import java.util.Locale;
3231
import java.util.Map;
3332
import org.apache.hadoop.conf.Configuration;
3433
import org.apache.hadoop.fs.Path;
34+
import org.apache.parquet.Preconditions;
3535
import org.apache.parquet.cli.BaseCommand;
3636
import org.apache.parquet.format.converter.ParquetMetadataConverter;
3737
import org.apache.parquet.hadoop.ParquetFileReader;
@@ -143,7 +143,7 @@ private String formatRatio(float ratio) {
143143

144144
@Override
145145
public List<String> getExamples() {
146-
return Lists.newArrayList(
146+
return Arrays.asList(
147147
"# Print every column size in byte and ratio for a Parquet file",
148148
"sample.parquet",
149149
"sample.parquet -c col_1",

‎parquet-cli/src/main/java/org/apache/parquet/cli/commands/ConvertCSVCommand.java‎

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,16 @@
2525

2626
import com.beust.jcommander.Parameter;
2727
import com.beust.jcommander.Parameters;
28-
import com.google.common.base.Preconditions;
29-
import com.google.common.collect.ImmutableSet;
30-
import com.google.common.collect.Lists;
3128
import java.io.File;
3229
import java.io.IOException;
3330
import java.nio.charset.Charset;
31+
import java.util.Arrays;
3432
import java.util.List;
3533
import java.util.Set;
3634
import org.apache.avro.Schema;
3735
import org.apache.avro.SchemaNormalization;
3836
import org.apache.avro.generic.GenericData;
37+
import org.apache.parquet.Preconditions;
3938
import org.apache.parquet.avro.AvroParquetWriter;
4039
import org.apache.parquet.cli.BaseCommand;
4140
import org.apache.parquet.cli.csv.AvroCSV;
@@ -141,9 +140,9 @@ public int run() throws IOException {
141140
if (avroSchemaFile != null) {
142141
csvSchema = Schemas.fromAvsc(open(avroSchemaFile));
143142
} else {
144-
Set<String> required = ImmutableSet.of();
143+
Set<String> required = Set.of();
145144
if (requiredFields != null) {
146-
required = ImmutableSet.copyOf(requiredFields);
145+
required = Set.copyOf(requiredFields);
147146
}
148147

149148
String filename = new File(targets.get(0)).getName();
@@ -199,7 +198,7 @@ public int run() throws IOException {
199198

200199
@Override
201200
public List<String> getExamples() {
202-
return Lists.newArrayList(
201+
return Arrays.asList(
203202
"# Create a Parquet file from a CSV file",
204203
"sample.csv -o sample.parquet --schema schema.avsc",
205204
"# Create a Parquet file in HDFS from local CSV",

0 commit comments

Comments
 (0)