diff --git a/parquet-hadoop/src/main/java/org/apache/parquet/format/converter/ParquetMetadataConverter.java b/parquet-hadoop/src/main/java/org/apache/parquet/format/converter/ParquetMetadataConverter.java index 15fcd14a73..8c2bb014a8 100644 --- a/parquet-hadoop/src/main/java/org/apache/parquet/format/converter/ParquetMetadataConverter.java +++ b/parquet-hadoop/src/main/java/org/apache/parquet/format/converter/ParquetMetadataConverter.java @@ -665,11 +665,13 @@ private void addRowGroup( rowGroups.add(rowGroup); } - private List toFormatEncodings(Set encodings) { + // Visible for testing + List toFormatEncodings(Set encodings) { List converted = new ArrayList(encodings.size()); for (org.apache.parquet.column.Encoding encoding : encodings) { converted.add(getEncoding(encoding)); } + Collections.sort(converted); return converted; } diff --git a/parquet-hadoop/src/test/java/org/apache/parquet/format/converter/TestParquetMetadataConverter.java b/parquet-hadoop/src/test/java/org/apache/parquet/format/converter/TestParquetMetadataConverter.java index 82c70bed95..ce33681ca0 100644 --- a/parquet-hadoop/src/test/java/org/apache/parquet/format/converter/TestParquetMetadataConverter.java +++ b/parquet-hadoop/src/test/java/org/apache/parquet/format/converter/TestParquetMetadataConverter.java @@ -756,6 +756,20 @@ public void testEncodingsCache() { assertEquals("java.util.Collections$UnmodifiableSet", res3.getClass().getName()); } + @Test + public void testEncodingsOrder() { + ParquetMetadataConverter parquetMetadataConverter = new ParquetMetadataConverter(); + + Set columnEncodings = + new HashSet<>(Arrays.asList(org.apache.parquet.column.Encoding.values())); + + // Assert that the encodings are returned in ascending ordinal order + List formatEncodings = parquetMetadataConverter.toFormatEncodings(columnEncodings); + for (int i=1; i