You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@parquet.apache.org by fo...@apache.org on 2019/10/07 07:36:11 UTC
[parquet-mr] branch master updated: PARQUET-1578: Introduce Lambdas
(#641)
This is an automated email from the ASF dual-hosted git repository.
fokko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/parquet-mr.git
The following commit(s) were added to refs/heads/master by this push:
new 59ae034 PARQUET-1578: Introduce Lambdas (#641)
59ae034 is described below
commit 59ae0346cdda2c2fa00698276d9cba82a73c6856
Author: Fokko Driesprong <fo...@apache.org>
AuthorDate: Mon Oct 7 10:36:05 2019 +0300
PARQUET-1578: Introduce Lambdas (#641)
To improve on readability
---
.../parquet/avro/TestArrayCompatibility.java | 1048 ++++++++++----------
.../parquet/avro/TestAvroSchemaConverter.java | 35 +-
.../java/org/apache/parquet/io/api/Binary.java | 7 +-
.../apache/parquet/schema/TestTypeBuilders.java | 245 ++---
.../org/apache/parquet/schema/TestTypeUtil.java | 39 +-
.../parquet/bytes/TestByteBufferInputStreams.java | 50 +-
.../io/TestDelegatingSeekableInputStream.java | 43 +-
.../apache/parquet/util/TestDynConstructors.java | 102 +-
.../org/apache/parquet/util/TestDynMethods.java | 137 +--
.../apache/parquet/hadoop/ParquetFileReader.java | 52 +-
.../apache/parquet/hadoop/ParquetFileWriter.java | 8 +-
.../org/apache/parquet/hadoop/PrintFooter.java | 14 +-
.../apache/parquet/hadoop/TestMemoryManager.java | 7 +-
.../apache/parquet/hadoop/TestParquetWriter.java | 17 +-
.../hadoop/TestParquetWriterAppendBlocks.java | 22 +-
.../hadoop/util/TestHadoop2ByteBufferReads.java | 18 +-
16 files changed, 703 insertions(+), 1141 deletions(-)
diff --git a/parquet-avro/src/test/java/org/apache/parquet/avro/TestArrayCompatibility.java b/parquet-avro/src/test/java/org/apache/parquet/avro/TestArrayCompatibility.java
index 1f47ba7..76f296e 100644
--- a/parquet-avro/src/test/java/org/apache/parquet/avro/TestArrayCompatibility.java
+++ b/parquet-avro/src/test/java/org/apache/parquet/avro/TestArrayCompatibility.java
@@ -34,7 +34,6 @@ import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
import org.apache.parquet.DirectWriterTest;
-import org.apache.parquet.io.api.RecordConsumer;
import static org.apache.parquet.avro.AvroTestUtil.array;
import static org.apache.parquet.avro.AvroTestUtil.field;
@@ -64,20 +63,17 @@ public class TestArrayCompatibility extends DirectWriterTest {
"message UnannotatedListOfPrimitives {" +
" repeated int32 list_of_ints;" +
"}",
- new DirectWriter() {
- @Override
- public void write(RecordConsumer rc) {
- rc.startMessage();
- rc.startField("list_of_ints", 0);
+ rc -> {
+ rc.startMessage();
+ rc.startField("list_of_ints", 0);
- rc.addInteger(34);
- rc.addInteger(35);
- rc.addInteger(36);
+ rc.addInteger(34);
+ rc.addInteger(35);
+ rc.addInteger(36);
- rc.endField("list_of_ints", 0);
- rc.endMessage();
- }
- });
+ rc.endField("list_of_ints", 0);
+ rc.endMessage();
+ });
Schema expectedSchema = record("OldPrimitiveInList",
field("list_of_ints", array(primitive(Schema.Type.INT))));
@@ -100,34 +96,31 @@ public class TestArrayCompatibility extends DirectWriterTest {
" required float y;" +
" }" +
"}",
- new DirectWriter() {
- @Override
- public void write(RecordConsumer rc) {
- rc.startMessage();
- rc.startField("list_of_points", 0);
-
- rc.startGroup();
- rc.startField("x", 0);
- rc.addFloat(1.0f);
- rc.endField("x", 0);
- rc.startField("y", 1);
- rc.addFloat(1.0f);
- rc.endField("y", 1);
- rc.endGroup();
-
- rc.startGroup();
- rc.startField("x", 0);
- rc.addFloat(2.0f);
- rc.endField("x", 0);
- rc.startField("y", 1);
- rc.addFloat(2.0f);
- rc.endField("y", 1);
- rc.endGroup();
-
- rc.endField("list_of_points", 0);
- rc.endMessage();
- }
- });
+ rc -> {
+ rc.startMessage();
+ rc.startField("list_of_points", 0);
+
+ rc.startGroup();
+ rc.startField("x", 0);
+ rc.addFloat(1.0f);
+ rc.endField("x", 0);
+ rc.startField("y", 1);
+ rc.addFloat(1.0f);
+ rc.endField("y", 1);
+ rc.endGroup();
+
+ rc.startGroup();
+ rc.startField("x", 0);
+ rc.addFloat(2.0f);
+ rc.endField("x", 0);
+ rc.startField("y", 1);
+ rc.addFloat(2.0f);
+ rc.endField("y", 1);
+ rc.endGroup();
+
+ rc.endField("list_of_points", 0);
+ rc.endMessage();
+ });
Schema point = record("?",
field("x", primitive(Schema.Type.FLOAT)),
@@ -153,26 +146,23 @@ public class TestArrayCompatibility extends DirectWriterTest {
" repeated int32 array;" +
" }" +
"}",
- new DirectWriter() {
- @Override
- public void write(RecordConsumer rc) {
- rc.startMessage();
- rc.startField("list_of_ints", 0);
+ rc -> {
+ rc.startMessage();
+ rc.startField("list_of_ints", 0);
- rc.startGroup();
- rc.startField("array", 0);
+ rc.startGroup();
+ rc.startField("array", 0);
- rc.addInteger(34);
- rc.addInteger(35);
- rc.addInteger(36);
+ rc.addInteger(34);
+ rc.addInteger(35);
+ rc.addInteger(36);
- rc.endField("array", 0);
- rc.endGroup();
+ rc.endField("array", 0);
+ rc.endGroup();
- rc.endField("list_of_ints", 0);
- rc.endMessage();
- }
- });
+ rc.endField("list_of_ints", 0);
+ rc.endMessage();
+ });
Schema expectedSchema = record("RepeatedPrimitiveInList",
field("list_of_ints", array(Schema.create(Schema.Type.INT))));
@@ -197,40 +187,37 @@ public class TestArrayCompatibility extends DirectWriterTest {
" }" +
" }" +
"}",
- new DirectWriter() {
- @Override
- public void write(RecordConsumer rc) {
- rc.startMessage();
- rc.startField("locations", 0);
-
- rc.startGroup();
- rc.startField("element", 0);
-
- rc.startGroup();
- rc.startField("latitude", 0);
- rc.addDouble(0.0);
- rc.endField("latitude", 0);
- rc.startField("longitude", 1);
- rc.addDouble(0.0);
- rc.endField("longitude", 1);
- rc.endGroup();
-
- rc.startGroup();
- rc.startField("latitude", 0);
- rc.addDouble(0.0);
- rc.endField("latitude", 0);
- rc.startField("longitude", 1);
- rc.addDouble(180.0);
- rc.endField("longitude", 1);
- rc.endGroup();
-
- rc.endField("element", 0);
- rc.endGroup();
-
- rc.endField("locations", 0);
- rc.endMessage();
- }
- });
+ rc -> {
+ rc.startMessage();
+ rc.startField("locations", 0);
+
+ rc.startGroup();
+ rc.startField("element", 0);
+
+ rc.startGroup();
+ rc.startField("latitude", 0);
+ rc.addDouble(0.0);
+ rc.endField("latitude", 0);
+ rc.startField("longitude", 1);
+ rc.addDouble(0.0);
+ rc.endField("longitude", 1);
+ rc.endGroup();
+
+ rc.startGroup();
+ rc.startField("latitude", 0);
+ rc.addDouble(0.0);
+ rc.endField("latitude", 0);
+ rc.startField("longitude", 1);
+ rc.addDouble(180.0);
+ rc.endField("longitude", 1);
+ rc.endGroup();
+
+ rc.endField("element", 0);
+ rc.endGroup();
+
+ rc.endField("locations", 0);
+ rc.endMessage();
+ });
Schema location = record("element",
field("latitude", primitive(Schema.Type.DOUBLE)),
@@ -259,34 +246,31 @@ public class TestArrayCompatibility extends DirectWriterTest {
" }" +
" }" +
"}",
- new DirectWriter() {
- @Override
- public void write(RecordConsumer rc) {
- rc.startMessage();
- rc.startField("single_element_groups", 0);
-
- rc.startGroup();
- rc.startField("single_element_group", 0); // start writing array contents
-
- rc.startGroup();
- rc.startField("count", 0);
- rc.addLong(1234L);
- rc.endField("count", 0);
- rc.endGroup();
-
- rc.startGroup();
- rc.startField("count", 0);
- rc.addLong(2345L);
- rc.endField("count", 0);
- rc.endGroup();
-
- rc.endField("single_element_group", 0); // finished writing array contents
- rc.endGroup();
-
- rc.endField("single_element_groups", 0);
- rc.endMessage();
- }
- });
+ rc -> {
+ rc.startMessage();
+ rc.startField("single_element_groups", 0);
+
+ rc.startGroup();
+ rc.startField("single_element_group", 0); // start writing array contents
+
+ rc.startGroup();
+ rc.startField("count", 0);
+ rc.addLong(1234L);
+ rc.endField("count", 0);
+ rc.endGroup();
+
+ rc.startGroup();
+ rc.startField("count", 0);
+ rc.addLong(2345L);
+ rc.endField("count", 0);
+ rc.endGroup();
+
+ rc.endField("single_element_group", 0); // finished writing array contents
+ rc.endGroup();
+
+ rc.endField("single_element_groups", 0);
+ rc.endMessage();
+ });
// can't tell from storage whether this should be a list of single-field
// records or if the single_field_group layer is synthetic.
@@ -335,34 +319,31 @@ public class TestArrayCompatibility extends DirectWriterTest {
" }" +
" }" +
"}",
- new DirectWriter() {
- @Override
- public void write(RecordConsumer rc) {
- rc.startMessage();
- rc.startField("single_element_groups", 0);
-
- rc.startGroup();
- rc.startField("single_element_group", 0); // start writing array contents
-
- rc.startGroup();
- rc.startField("count", 0);
- rc.addLong(1234L);
- rc.endField("count", 0);
- rc.endGroup();
-
- rc.startGroup();
- rc.startField("count", 0);
- rc.addLong(2345L);
- rc.endField("count", 0);
- rc.endGroup();
-
- rc.endField("single_element_group", 0); // finished writing array contents
- rc.endGroup();
-
- rc.endField("single_element_groups", 0);
- rc.endMessage();
- }
- },
+ rc -> {
+ rc.startMessage();
+ rc.startField("single_element_groups", 0);
+
+ rc.startGroup();
+ rc.startField("single_element_group", 0); // start writing array contents
+
+ rc.startGroup();
+ rc.startField("count", 0);
+ rc.addLong(1234L);
+ rc.endField("count", 0);
+ rc.endGroup();
+
+ rc.startGroup();
+ rc.startField("count", 0);
+ rc.addLong(2345L);
+ rc.endField("count", 0);
+ rc.endGroup();
+
+ rc.endField("single_element_group", 0); // finished writing array contents
+ rc.endGroup();
+
+ rc.endField("single_element_groups", 0);
+ rc.endMessage();
+ },
metadata);
GenericRecord expectedRecord = instance(expectedSchema,
@@ -388,58 +369,55 @@ public class TestArrayCompatibility extends DirectWriterTest {
" }" +
" }" +
"}",
- new DirectWriter() {
- @Override
- public void write(RecordConsumer rc) {
- rc.startMessage();
- rc.startField("locations", 0);
-
- rc.startGroup();
- rc.startField("list", 0); // start writing array contents
-
- // write a non-null element
- rc.startGroup(); // array level
- rc.startField("element", 0);
-
- rc.startGroup();
- rc.startField("latitude", 0);
- rc.addDouble(0.0);
- rc.endField("latitude", 0);
- rc.startField("longitude", 1);
- rc.addDouble(0.0);
- rc.endField("longitude", 1);
- rc.endGroup();
-
- rc.endField("element", 0);
- rc.endGroup(); // array level
-
- // write a null element (element field is omitted)
- rc.startGroup(); // array level
- rc.endGroup(); // array level
-
- // write a second non-null element
- rc.startGroup(); // array level
- rc.startField("element", 0);
-
- rc.startGroup();
- rc.startField("latitude", 0);
- rc.addDouble(0.0);
- rc.endField("latitude", 0);
- rc.startField("longitude", 1);
- rc.addDouble(180.0);
- rc.endField("longitude", 1);
- rc.endGroup();
-
- rc.endField("element", 0);
- rc.endGroup(); // array level
-
- rc.endField("list", 0); // finished writing array contents
- rc.endGroup();
-
- rc.endField("locations", 0);
- rc.endMessage();
- }
- });
+ rc -> {
+ rc.startMessage();
+ rc.startField("locations", 0);
+
+ rc.startGroup();
+ rc.startField("list", 0); // start writing array contents
+
+ // write a non-null element
+ rc.startGroup(); // array level
+ rc.startField("element", 0);
+
+ rc.startGroup();
+ rc.startField("latitude", 0);
+ rc.addDouble(0.0);
+ rc.endField("latitude", 0);
+ rc.startField("longitude", 1);
+ rc.addDouble(0.0);
+ rc.endField("longitude", 1);
+ rc.endGroup();
+
+ rc.endField("element", 0);
+ rc.endGroup(); // array level
+
+ // write a null element (element field is omitted)
+ rc.startGroup(); // array level
+ rc.endGroup(); // array level
+
+ // write a second non-null element
+ rc.startGroup(); // array level
+ rc.startField("element", 0);
+
+ rc.startGroup();
+ rc.startField("latitude", 0);
+ rc.addDouble(0.0);
+ rc.endField("latitude", 0);
+ rc.startField("longitude", 1);
+ rc.addDouble(180.0);
+ rc.endField("longitude", 1);
+ rc.endGroup();
+
+ rc.endField("element", 0);
+ rc.endGroup(); // array level
+
+ rc.endField("list", 0); // finished writing array contents
+ rc.endGroup();
+
+ rc.endField("locations", 0);
+ rc.endMessage();
+ });
Schema location = record("element",
field("latitude", primitive(Schema.Type.DOUBLE)),
@@ -484,54 +462,51 @@ public class TestArrayCompatibility extends DirectWriterTest {
" }" +
" }" +
"}",
- new DirectWriter() {
- @Override
- public void write(RecordConsumer rc) {
- rc.startMessage();
- rc.startField("locations", 0);
-
- rc.startGroup();
- rc.startField("list", 0); // start writing array contents
-
- // write a non-null element
- rc.startGroup(); // array level
- rc.startField("element", 0);
-
- rc.startGroup();
- rc.startField("latitude", 0);
- rc.addDouble(0.0);
- rc.endField("latitude", 0);
- rc.startField("longitude", 1);
- rc.addDouble(180.0);
- rc.endField("longitude", 1);
- rc.endGroup();
-
- rc.endField("element", 0);
- rc.endGroup(); // array level
-
- // write a second non-null element
- rc.startGroup(); // array level
- rc.startField("element", 0);
-
- rc.startGroup();
- rc.startField("latitude", 0);
- rc.addDouble(0.0);
- rc.endField("latitude", 0);
- rc.startField("longitude", 1);
- rc.addDouble(0.0);
- rc.endField("longitude", 1);
- rc.endGroup();
-
- rc.endField("element", 0);
- rc.endGroup(); // array level
-
- rc.endField("list", 0); // finished writing array contents
- rc.endGroup();
-
- rc.endField("locations", 0);
- rc.endMessage();
- }
- });
+ rc -> {
+ rc.startMessage();
+ rc.startField("locations", 0);
+
+ rc.startGroup();
+ rc.startField("list", 0); // start writing array contents
+
+ // write a non-null element
+ rc.startGroup(); // array level
+ rc.startField("element", 0);
+
+ rc.startGroup();
+ rc.startField("latitude", 0);
+ rc.addDouble(0.0);
+ rc.endField("latitude", 0);
+ rc.startField("longitude", 1);
+ rc.addDouble(180.0);
+ rc.endField("longitude", 1);
+ rc.endGroup();
+
+ rc.endField("element", 0);
+ rc.endGroup(); // array level
+
+ // write a second non-null element
+ rc.startGroup(); // array level
+ rc.startField("element", 0);
+
+ rc.startGroup();
+ rc.startField("latitude", 0);
+ rc.addDouble(0.0);
+ rc.endField("latitude", 0);
+ rc.startField("longitude", 1);
+ rc.addDouble(0.0);
+ rc.endField("longitude", 1);
+ rc.endGroup();
+
+ rc.endField("element", 0);
+ rc.endGroup(); // array level
+
+ rc.endField("list", 0); // finished writing array contents
+ rc.endGroup();
+
+ rc.endField("locations", 0);
+ rc.endMessage();
+ });
Schema location = record("element",
field("latitude", primitive(Schema.Type.DOUBLE)),
@@ -574,54 +549,51 @@ public class TestArrayCompatibility extends DirectWriterTest {
" }" +
" }" +
"}",
- new DirectWriter() {
- @Override
- public void write(RecordConsumer rc) {
- rc.startMessage();
- rc.startField("locations", 0);
-
- rc.startGroup();
- rc.startField("array", 0); // start writing array contents
-
- // write a non-null element
- rc.startGroup(); // array level
- rc.startField("element", 0);
-
- rc.startGroup();
- rc.startField("latitude", 0);
- rc.addDouble(0.0);
- rc.endField("latitude", 0);
- rc.startField("longitude", 1);
- rc.addDouble(180.0);
- rc.endField("longitude", 1);
- rc.endGroup();
-
- rc.endField("element", 0);
- rc.endGroup(); // array level
-
- // write a second non-null element
- rc.startGroup(); // array level
- rc.startField("element", 0);
-
- rc.startGroup();
- rc.startField("latitude", 0);
- rc.addDouble(0.0);
- rc.endField("latitude", 0);
- rc.startField("longitude", 1);
- rc.addDouble(0.0);
- rc.endField("longitude", 1);
- rc.endGroup();
-
- rc.endField("element", 0);
- rc.endGroup(); // array level
-
- rc.endField("array", 0); // finished writing array contents
- rc.endGroup();
-
- rc.endField("locations", 0);
- rc.endMessage();
- }
- });
+ rc -> {
+ rc.startMessage();
+ rc.startField("locations", 0);
+
+ rc.startGroup();
+ rc.startField("array", 0); // start writing array contents
+
+ // write a non-null element
+ rc.startGroup(); // array level
+ rc.startField("element", 0);
+
+ rc.startGroup();
+ rc.startField("latitude", 0);
+ rc.addDouble(0.0);
+ rc.endField("latitude", 0);
+ rc.startField("longitude", 1);
+ rc.addDouble(180.0);
+ rc.endField("longitude", 1);
+ rc.endGroup();
+
+ rc.endField("element", 0);
+ rc.endGroup(); // array level
+
+ // write a second non-null element
+ rc.startGroup(); // array level
+ rc.startField("element", 0);
+
+ rc.startGroup();
+ rc.startField("latitude", 0);
+ rc.addDouble(0.0);
+ rc.endField("latitude", 0);
+ rc.startField("longitude", 1);
+ rc.addDouble(0.0);
+ rc.endField("longitude", 1);
+ rc.endGroup();
+
+ rc.endField("element", 0);
+ rc.endGroup(); // array level
+
+ rc.endField("array", 0); // finished writing array contents
+ rc.endGroup();
+
+ rc.endField("locations", 0);
+ rc.endMessage();
+ });
Schema location = record("element",
field("latitude", primitive(Schema.Type.DOUBLE)),
@@ -656,54 +628,51 @@ public class TestArrayCompatibility extends DirectWriterTest {
" }" +
" }" +
"}",
- new DirectWriter() {
- @Override
- public void write(RecordConsumer rc) {
- rc.startMessage();
- rc.startField("locations", 0);
-
- rc.startGroup();
- rc.startField("array", 0); // start writing array contents
-
- // write a non-null element
- rc.startGroup(); // array level
- rc.startField("element", 0);
-
- rc.startGroup();
- rc.startField("latitude", 0);
- rc.addDouble(0.0);
- rc.endField("latitude", 0);
- rc.startField("longitude", 1);
- rc.addDouble(180.0);
- rc.endField("longitude", 1);
- rc.endGroup();
-
- rc.endField("element", 0);
- rc.endGroup(); // array level
-
- // write a second non-null element
- rc.startGroup(); // array level
- rc.startField("element", 0);
-
- rc.startGroup();
- rc.startField("latitude", 0);
- rc.addDouble(0.0);
- rc.endField("latitude", 0);
- rc.startField("longitude", 1);
- rc.addDouble(0.0);
- rc.endField("longitude", 1);
- rc.endGroup();
-
- rc.endField("element", 0);
- rc.endGroup(); // array level
-
- rc.endField("array", 0); // finished writing array contents
- rc.endGroup();
-
- rc.endField("locations", 0);
- rc.endMessage();
- }
- });
+ rc -> {
+ rc.startMessage();
+ rc.startField("locations", 0);
+
+ rc.startGroup();
+ rc.startField("array", 0); // start writing array contents
+
+ // write a non-null element
+ rc.startGroup(); // array level
+ rc.startField("element", 0);
+
+ rc.startGroup();
+ rc.startField("latitude", 0);
+ rc.addDouble(0.0);
+ rc.endField("latitude", 0);
+ rc.startField("longitude", 1);
+ rc.addDouble(180.0);
+ rc.endField("longitude", 1);
+ rc.endGroup();
+
+ rc.endField("element", 0);
+ rc.endGroup(); // array level
+
+ // write a second non-null element
+ rc.startGroup(); // array level
+ rc.startField("element", 0);
+
+ rc.startGroup();
+ rc.startField("latitude", 0);
+ rc.addDouble(0.0);
+ rc.endField("latitude", 0);
+ rc.startField("longitude", 1);
+ rc.addDouble(0.0);
+ rc.endField("longitude", 1);
+ rc.endGroup();
+
+ rc.endField("element", 0);
+ rc.endGroup(); // array level
+
+ rc.endField("array", 0); // finished writing array contents
+ rc.endGroup();
+
+ rc.endField("locations", 0);
+ rc.endMessage();
+ });
Schema location = record("element",
field("latitude", primitive(Schema.Type.DOUBLE)),
@@ -742,48 +711,45 @@ public class TestArrayCompatibility extends DirectWriterTest {
" }" +
" }" +
"}",
- new DirectWriter() {
- @Override
- public void write(RecordConsumer rc) {
- rc.startMessage();
- rc.startField("locations", 0);
+ rc -> {
+ rc.startMessage();
+ rc.startField("locations", 0);
- rc.startGroup();
- rc.startField("array", 0); // start writing array contents
+ rc.startGroup();
+ rc.startField("array", 0); // start writing array contents
- rc.startGroup();
- rc.startField("array", 0); // start writing inner array contents
+ rc.startGroup();
+ rc.startField("array", 0); // start writing inner array contents
- // write [34, 35, 36]
- rc.addInteger(34);
- rc.addInteger(35);
- rc.addInteger(36);
+ // write [34, 35, 36]
+ rc.addInteger(34);
+ rc.addInteger(35);
+ rc.addInteger(36);
- rc.endField("array", 0); // finished writing inner array contents
- rc.endGroup();
+ rc.endField("array", 0); // finished writing inner array contents
+ rc.endGroup();
- // write an empty list
- rc.startGroup();
- rc.endGroup();
+ // write an empty list
+ rc.startGroup();
+ rc.endGroup();
- rc.startGroup();
- rc.startField("array", 0); // start writing inner array contents
+ rc.startGroup();
+ rc.startField("array", 0); // start writing inner array contents
- // write [32, 33, 34]
- rc.addInteger(32);
- rc.addInteger(33);
- rc.addInteger(34);
+ // write [32, 33, 34]
+ rc.addInteger(32);
+ rc.addInteger(33);
+ rc.addInteger(34);
- rc.endField("array", 0); // finished writing inner array contents
- rc.endGroup();
+ rc.endField("array", 0); // finished writing inner array contents
+ rc.endGroup();
- rc.endField("array", 0); // finished writing array contents
- rc.endGroup();
+ rc.endField("array", 0); // finished writing array contents
+ rc.endGroup();
- rc.endField("locations", 0);
- rc.endMessage();
- }
- });
+ rc.endField("locations", 0);
+ rc.endMessage();
+ });
Schema listOfLists = array(array(primitive(Schema.Type.INT)));
Schema oldSchema = record("AvroCompatListInList",
@@ -810,48 +776,45 @@ public class TestArrayCompatibility extends DirectWriterTest {
" }" +
" }" +
"}",
- new DirectWriter() {
- @Override
- public void write(RecordConsumer rc) {
- rc.startMessage();
- rc.startField("locations", 0);
+ rc -> {
+ rc.startMessage();
+ rc.startField("locations", 0);
- rc.startGroup();
- rc.startField("listOfLists_tuple", 0); // start writing array contents
+ rc.startGroup();
+ rc.startField("listOfLists_tuple", 0); // start writing array contents
- rc.startGroup();
- rc.startField("listOfLists_tuple_tuple", 0); // start writing inner array contents
+ rc.startGroup();
+ rc.startField("listOfLists_tuple_tuple", 0); // start writing inner array contents
- // write [34, 35, 36]
- rc.addInteger(34);
- rc.addInteger(35);
- rc.addInteger(36);
+ // write [34, 35, 36]
+ rc.addInteger(34);
+ rc.addInteger(35);
+ rc.addInteger(36);
- rc.endField("listOfLists_tuple_tuple", 0); // finished writing inner array contents
- rc.endGroup();
+ rc.endField("listOfLists_tuple_tuple", 0); // finished writing inner array contents
+ rc.endGroup();
- // write an empty list
- rc.startGroup();
- rc.endGroup();
+ // write an empty list
+ rc.startGroup();
+ rc.endGroup();
- rc.startGroup();
- rc.startField("listOfLists_tuple_tuple", 0); // start writing inner array contents
+ rc.startGroup();
+ rc.startField("listOfLists_tuple_tuple", 0); // start writing inner array contents
- // write [32, 33, 34]
- rc.addInteger(32);
- rc.addInteger(33);
- rc.addInteger(34);
+ // write [32, 33, 34]
+ rc.addInteger(32);
+ rc.addInteger(33);
+ rc.addInteger(34);
- rc.endField("listOfLists_tuple_tuple", 0); // finished writing inner array contents
- rc.endGroup();
+ rc.endField("listOfLists_tuple_tuple", 0); // finished writing inner array contents
+ rc.endGroup();
- rc.endField("listOfLists_tuple", 0); // finished writing array contents
- rc.endGroup();
+ rc.endField("listOfLists_tuple", 0); // finished writing array contents
+ rc.endGroup();
- rc.endField("locations", 0);
- rc.endMessage();
- }
- });
+ rc.endField("locations", 0);
+ rc.endMessage();
+ });
Schema listOfLists = array(array(primitive(Schema.Type.INT)));
Schema oldSchema = record("ThriftCompatListInList",
@@ -881,54 +844,51 @@ public class TestArrayCompatibility extends DirectWriterTest {
" }" +
" }" +
"}",
- new DirectWriter() {
- @Override
- public void write(RecordConsumer rc) {
- rc.startMessage();
- rc.startField("locations", 0);
-
- rc.startGroup();
- rc.startField("locations_tuple", 0); // start writing array contents
-
- // write a non-null element
- rc.startGroup(); // array level
- rc.startField("element", 0);
-
- rc.startGroup();
- rc.startField("latitude", 0);
- rc.addDouble(0.0);
- rc.endField("latitude", 0);
- rc.startField("longitude", 1);
- rc.addDouble(180.0);
- rc.endField("longitude", 1);
- rc.endGroup();
-
- rc.endField("element", 0);
- rc.endGroup(); // array level
-
- // write a second non-null element
- rc.startGroup(); // array level
- rc.startField("element", 0);
-
- rc.startGroup();
- rc.startField("latitude", 0);
- rc.addDouble(0.0);
- rc.endField("latitude", 0);
- rc.startField("longitude", 1);
- rc.addDouble(0.0);
- rc.endField("longitude", 1);
- rc.endGroup();
-
- rc.endField("element", 0);
- rc.endGroup(); // array level
-
- rc.endField("locations_tuple", 0); // finished writing array contents
- rc.endGroup();
-
- rc.endField("locations", 0);
- rc.endMessage();
- }
- });
+ rc -> {
+ rc.startMessage();
+ rc.startField("locations", 0);
+
+ rc.startGroup();
+ rc.startField("locations_tuple", 0); // start writing array contents
+
+ // write a non-null element
+ rc.startGroup(); // array level
+ rc.startField("element", 0);
+
+ rc.startGroup();
+ rc.startField("latitude", 0);
+ rc.addDouble(0.0);
+ rc.endField("latitude", 0);
+ rc.startField("longitude", 1);
+ rc.addDouble(180.0);
+ rc.endField("longitude", 1);
+ rc.endGroup();
+
+ rc.endField("element", 0);
+ rc.endGroup(); // array level
+
+ // write a second non-null element
+ rc.startGroup(); // array level
+ rc.startField("element", 0);
+
+ rc.startGroup();
+ rc.startField("latitude", 0);
+ rc.addDouble(0.0);
+ rc.endField("latitude", 0);
+ rc.startField("longitude", 1);
+ rc.addDouble(0.0);
+ rc.endField("longitude", 1);
+ rc.endGroup();
+
+ rc.endField("element", 0);
+ rc.endGroup(); // array level
+
+ rc.endField("locations_tuple", 0); // finished writing array contents
+ rc.endGroup();
+
+ rc.endField("locations", 0);
+ rc.endMessage();
+ });
Schema location = record("element",
field("latitude", primitive(Schema.Type.DOUBLE)),
@@ -963,54 +923,51 @@ public class TestArrayCompatibility extends DirectWriterTest {
" }" +
" }" +
"}",
- new DirectWriter() {
- @Override
- public void write(RecordConsumer rc) {
- rc.startMessage();
- rc.startField("locations", 0);
-
- rc.startGroup();
- rc.startField("bag", 0); // start writing array contents
-
- // write a non-null element
- rc.startGroup(); // array level
- rc.startField("element", 0);
-
- rc.startGroup();
- rc.startField("latitude", 0);
- rc.addDouble(0.0);
- rc.endField("latitude", 0);
- rc.startField("longitude", 1);
- rc.addDouble(180.0);
- rc.endField("longitude", 1);
- rc.endGroup();
-
- rc.endField("element", 0);
- rc.endGroup(); // array level
-
- // write a second non-null element
- rc.startGroup(); // array level
- rc.startField("element", 0);
-
- rc.startGroup();
- rc.startField("latitude", 0);
- rc.addDouble(0.0);
- rc.endField("latitude", 0);
- rc.startField("longitude", 1);
- rc.addDouble(0.0);
- rc.endField("longitude", 1);
- rc.endGroup();
-
- rc.endField("element", 0);
- rc.endGroup(); // array level
-
- rc.endField("bag", 0); // finished writing array contents
- rc.endGroup();
-
- rc.endField("locations", 0);
- rc.endMessage();
- }
- });
+ rc -> {
+ rc.startMessage();
+ rc.startField("locations", 0);
+
+ rc.startGroup();
+ rc.startField("bag", 0); // start writing array contents
+
+ // write a non-null element
+ rc.startGroup(); // array level
+ rc.startField("element", 0);
+
+ rc.startGroup();
+ rc.startField("latitude", 0);
+ rc.addDouble(0.0);
+ rc.endField("latitude", 0);
+ rc.startField("longitude", 1);
+ rc.addDouble(180.0);
+ rc.endField("longitude", 1);
+ rc.endGroup();
+
+ rc.endField("element", 0);
+ rc.endGroup(); // array level
+
+ // write a second non-null element
+ rc.startGroup(); // array level
+ rc.startField("element", 0);
+
+ rc.startGroup();
+ rc.startField("latitude", 0);
+ rc.addDouble(0.0);
+ rc.endField("latitude", 0);
+ rc.startField("longitude", 1);
+ rc.addDouble(0.0);
+ rc.endField("longitude", 1);
+ rc.endGroup();
+
+ rc.endField("element", 0);
+ rc.endGroup(); // array level
+
+ rc.endField("bag", 0); // finished writing array contents
+ rc.endGroup();
+
+ rc.endField("locations", 0);
+ rc.endMessage();
+ });
Schema location = record("element",
field("latitude", primitive(Schema.Type.DOUBLE)),
@@ -1053,50 +1010,47 @@ public class TestArrayCompatibility extends DirectWriterTest {
" }" +
" }" +
"}",
- new DirectWriter() {
- @Override
- public void write(RecordConsumer rc) {
- rc.startMessage();
- rc.startField("list_of_structs", 0);
-
- rc.startGroup();
- rc.startField("list", 0); // start writing array contents
-
- // write a non-null element
- rc.startGroup(); // array level
- rc.startField("element", 0);
-
- // the inner element field
- rc.startGroup();
- rc.startField("element", 0);
- rc.addFloat(33.0F);
- rc.endField("element", 0);
- rc.endGroup();
-
- rc.endField("element", 0);
- rc.endGroup(); // array level
-
- // write a second non-null element
- rc.startGroup(); // array level
- rc.startField("element", 0);
-
- // the inner element field
- rc.startGroup();
- rc.startField("element", 0);
- rc.addFloat(34.0F);
- rc.endField("element", 0);
- rc.endGroup();
-
- rc.endField("element", 0);
- rc.endGroup(); // array level
-
- rc.endField("list", 0); // finished writing array contents
- rc.endGroup();
-
- rc.endField("list_of_structs", 0);
- rc.endMessage();
- }
- });
+ rc -> {
+ rc.startMessage();
+ rc.startField("list_of_structs", 0);
+
+ rc.startGroup();
+ rc.startField("list", 0); // start writing array contents
+
+ // write a non-null element
+ rc.startGroup(); // array level
+ rc.startField("element", 0);
+
+ // the inner element field
+ rc.startGroup();
+ rc.startField("element", 0);
+ rc.addFloat(33.0F);
+ rc.endField("element", 0);
+ rc.endGroup();
+
+ rc.endField("element", 0);
+ rc.endGroup(); // array level
+
+ // write a second non-null element
+ rc.startGroup(); // array level
+ rc.startField("element", 0);
+
+ // the inner element field
+ rc.startGroup();
+ rc.startField("element", 0);
+ rc.addFloat(34.0F);
+ rc.endField("element", 0);
+ rc.endGroup();
+
+ rc.endField("element", 0);
+ rc.endGroup(); // array level
+
+ rc.endField("list", 0); // finished writing array contents
+ rc.endGroup();
+
+ rc.endField("list_of_structs", 0);
+ rc.endMessage();
+ });
Schema structWithElementField = record("element",
field("element", primitive(Schema.Type.FLOAT)));
diff --git a/parquet-avro/src/test/java/org/apache/parquet/avro/TestAvroSchemaConverter.java b/parquet-avro/src/test/java/org/apache/parquet/avro/TestAvroSchemaConverter.java
index 36bd7ba..f5b348b 100644
--- a/parquet-avro/src/test/java/org/apache/parquet/avro/TestAvroSchemaConverter.java
+++ b/parquet-avro/src/test/java/org/apache/parquet/avro/TestAvroSchemaConverter.java
@@ -603,12 +603,7 @@ public class TestAvroSchemaConverter {
}
assertThrows("Should not allow TIME_MICROS with " + primitive,
- IllegalArgumentException.class, new Runnable() {
- @Override
- public void run() {
- new AvroSchemaConverter().convert(message(type));
- }
- });
+ IllegalArgumentException.class, () -> new AvroSchemaConverter().convert(message(type)));
}
}
@@ -633,12 +628,7 @@ public class TestAvroSchemaConverter {
}
assertThrows("Should not allow TIME_MICROS with " + primitive,
- IllegalArgumentException.class, new Runnable() {
- @Override
- public void run() {
- new AvroSchemaConverter().convert(message(type));
- }
- });
+ IllegalArgumentException.class, () -> new AvroSchemaConverter().convert(message(type)));
}
}
@@ -663,12 +653,7 @@ public class TestAvroSchemaConverter {
}
assertThrows("Should not allow TIME_MICROS with " + primitive,
- IllegalArgumentException.class, new Runnable() {
- @Override
- public void run() {
- new AvroSchemaConverter().convert(message(type));
- }
- });
+ IllegalArgumentException.class, () -> new AvroSchemaConverter().convert(message(type)));
}
}
@@ -693,12 +678,7 @@ public class TestAvroSchemaConverter {
}
assertThrows("Should not allow TIMESTAMP_MILLIS with " + primitive,
- IllegalArgumentException.class, new Runnable() {
- @Override
- public void run() {
- new AvroSchemaConverter().convert(message(type));
- }
- });
+ IllegalArgumentException.class, () -> new AvroSchemaConverter().convert(message(type)));
}
}
@@ -723,12 +703,7 @@ public class TestAvroSchemaConverter {
}
assertThrows("Should not allow TIMESTAMP_MICROS with " + primitive,
- IllegalArgumentException.class, new Runnable() {
- @Override
- public void run() {
- new AvroSchemaConverter().convert(message(type));
- }
- });
+ IllegalArgumentException.class, () -> new AvroSchemaConverter().convert(message(type)));
}
}
diff --git a/parquet-column/src/main/java/org/apache/parquet/io/api/Binary.java b/parquet-column/src/main/java/org/apache/parquet/io/api/Binary.java
index 021d171..a6f0145 100644
--- a/parquet-column/src/main/java/org/apache/parquet/io/api/Binary.java
+++ b/parquet-column/src/main/java/org/apache/parquet/io/api/Binary.java
@@ -232,12 +232,7 @@ abstract public class Binary implements Comparable<Binary>, Serializable {
}
private static final ThreadLocal<CharsetEncoder> ENCODER =
- new ThreadLocal<CharsetEncoder>() {
- @Override
- protected CharsetEncoder initialValue() {
- return StandardCharsets.UTF_8.newEncoder();
- }
- };
+ ThreadLocal.withInitial(StandardCharsets.UTF_8::newEncoder);
private static ByteBuffer encodeUTF8(CharSequence value) {
try {
diff --git a/parquet-column/src/test/java/org/apache/parquet/schema/TestTypeBuilders.java b/parquet-column/src/test/java/org/apache/parquet/schema/TestTypeBuilders.java
index 82e58ef..d0254b8 100644
--- a/parquet-column/src/test/java/org/apache/parquet/schema/TestTypeBuilders.java
+++ b/parquet-column/src/test/java/org/apache/parquet/schema/TestTypeBuilders.java
@@ -282,92 +282,52 @@ public class TestTypeBuilders {
@Test
public void testDecimalAnnotationMissingPrecision() {
assertThrows("Should reject decimal annotation without precision",
- IllegalArgumentException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.buildMessage()
- .required(INT32).as(DECIMAL).scale(2)
- .named("aDecimal")
- .named("DecimalMessage");
- }
- });
- assertThrows("Should reject decimal annotation without precision",
- IllegalArgumentException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.buildMessage()
- .required(INT64).as(DECIMAL).scale(2)
- .named("aDecimal")
- .named("DecimalMessage");
- }
- });
+ IllegalArgumentException.class, (Callable<Type>) () -> Types.buildMessage()
+ .required(INT32).as(DECIMAL).scale(2)
+ .named("aDecimal")
+ .named("DecimalMessage"));
assertThrows("Should reject decimal annotation without precision",
- IllegalArgumentException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.buildMessage()
- .required(BINARY).as(DECIMAL).scale(2)
- .named("aDecimal")
- .named("DecimalMessage");
- }
- });
+ IllegalArgumentException.class, (Callable<Type>) () -> Types.buildMessage()
+ .required(INT64).as(DECIMAL).scale(2)
+ .named("aDecimal")
+ .named("DecimalMessage"));
assertThrows("Should reject decimal annotation without precision",
- IllegalArgumentException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.buildMessage()
- .required(FIXED_LEN_BYTE_ARRAY).length(7)
- .as(DECIMAL).scale(2)
+ IllegalArgumentException.class, (Callable<Type>) () -> Types.buildMessage()
+ .required(BINARY).as(DECIMAL).scale(2)
.named("aDecimal")
- .named("DecimalMessage");
- }
- }
+ .named("DecimalMessage"));
+ assertThrows("Should reject decimal annotation without precision",
+ IllegalArgumentException.class, (Callable<Type>) () -> Types.buildMessage()
+ .required(FIXED_LEN_BYTE_ARRAY).length(7)
+ .as(DECIMAL).scale(2)
+ .named("aDecimal")
+ .named("DecimalMessage")
);
}
@Test
public void testDecimalAnnotationPrecisionScaleBound() {
assertThrows("Should reject scale greater than precision",
- IllegalArgumentException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.buildMessage()
- .required(INT32).as(DECIMAL).precision(3).scale(4)
- .named("aDecimal")
- .named("DecimalMessage");
- }
- });
- assertThrows("Should reject scale greater than precision",
- IllegalArgumentException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.buildMessage()
- .required(INT64).as(DECIMAL).precision(3).scale(4)
- .named("aDecimal")
- .named("DecimalMessage");
- }
- });
+ IllegalArgumentException.class, (Callable<Type>) () -> Types.buildMessage()
+ .required(INT32).as(DECIMAL).precision(3).scale(4)
+ .named("aDecimal")
+ .named("DecimalMessage"));
assertThrows("Should reject scale greater than precision",
- IllegalArgumentException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.buildMessage()
- .required(BINARY).as(DECIMAL).precision(3).scale(4)
- .named("aDecimal")
- .named("DecimalMessage");
- }
- });
+ IllegalArgumentException.class, (Callable<Type>) () -> Types.buildMessage()
+ .required(INT64).as(DECIMAL).precision(3).scale(4)
+ .named("aDecimal")
+ .named("DecimalMessage"));
assertThrows("Should reject scale greater than precision",
- IllegalArgumentException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.buildMessage()
- .required(FIXED_LEN_BYTE_ARRAY).length(7)
- .as(DECIMAL).precision(3).scale(4)
+ IllegalArgumentException.class, (Callable<Type>) () -> Types.buildMessage()
+ .required(BINARY).as(DECIMAL).precision(3).scale(4)
.named("aDecimal")
- .named("DecimalMessage");
- }
- }
+ .named("DecimalMessage"));
+ assertThrows("Should reject scale greater than precision",
+ IllegalArgumentException.class, (Callable<Type>) () -> Types.buildMessage()
+ .required(FIXED_LEN_BYTE_ARRAY).length(7)
+ .as(DECIMAL).precision(3).scale(4)
+ .named("aDecimal")
+ .named("DecimalMessage")
);
}
@@ -375,42 +335,22 @@ public class TestTypeBuilders {
public void testDecimalAnnotationLengthCheck() {
// maximum precision for 4 bytes is 9
assertThrows("should reject precision 10 with length 4",
- IllegalStateException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.required(FIXED_LEN_BYTE_ARRAY).length(4)
- .as(DECIMAL).precision(10).scale(2)
- .named("aDecimal");
- }
- });
+ IllegalStateException.class, (Callable<Type>) () -> Types.required(FIXED_LEN_BYTE_ARRAY).length(4)
+ .as(DECIMAL).precision(10).scale(2)
+ .named("aDecimal"));
assertThrows("should reject precision 10 with length 4",
- IllegalStateException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.required(INT32)
- .as(DECIMAL).precision(10).scale(2)
- .named("aDecimal");
- }
- });
+ IllegalStateException.class, (Callable<Type>) () -> Types.required(INT32)
+ .as(DECIMAL).precision(10).scale(2)
+ .named("aDecimal"));
// maximum precision for 8 bytes is 19
assertThrows("should reject precision 19 with length 8",
- IllegalStateException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.required(FIXED_LEN_BYTE_ARRAY).length(8)
- .as(DECIMAL).precision(19).scale(4)
- .named("aDecimal");
- }
- });
+ IllegalStateException.class, (Callable<Type>) () -> Types.required(FIXED_LEN_BYTE_ARRAY).length(8)
+ .as(DECIMAL).precision(19).scale(4)
+ .named("aDecimal"));
assertThrows("should reject precision 19 with length 8",
- IllegalStateException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.required(INT64).length(8)
- .as(DECIMAL).precision(19).scale(4)
- .named("aDecimal");
- }
- }
+ IllegalStateException.class, (Callable<Type>) () -> Types.required(INT64).length(8)
+ .as(DECIMAL).precision(19).scale(4)
+ .named("aDecimal")
);
}
@@ -421,14 +361,9 @@ public class TestTypeBuilders {
};
for (final PrimitiveTypeName type : unsupported) {
assertThrows("Should reject non-binary type: " + type,
- IllegalStateException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.required(type)
- .as(DECIMAL).precision(9).scale(2)
- .named("d");
- }
- });
+ IllegalStateException.class, (Callable<Type>) () -> Types.required(type)
+ .as(DECIMAL).precision(9).scale(2)
+ .named("d"));
}
}
@@ -453,21 +388,11 @@ public class TestTypeBuilders {
};
for (final PrimitiveTypeName type : nonBinary) {
assertThrows("Should reject non-binary type: " + type,
- IllegalStateException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.required(type).as(logicalType).named("col");
- }
- });
+ IllegalStateException.class, (Callable<Type>) () -> Types.required(type).as(logicalType).named("col"));
}
assertThrows("Should reject non-binary type: FIXED_LEN_BYTE_ARRAY",
- IllegalStateException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.required(FIXED_LEN_BYTE_ARRAY).length(1)
- .as(logicalType).named("col");
- }
- });
+ IllegalStateException.class, (Callable<Type>) () -> Types.required(FIXED_LEN_BYTE_ARRAY).length(1)
+ .as(logicalType).named("col"));
}
}
@@ -492,21 +417,11 @@ public class TestTypeBuilders {
};
for (final PrimitiveTypeName type : nonInt32) {
assertThrows("Should reject non-int32 type: " + type,
- IllegalStateException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.required(type).as(logicalType).named("col");
- }
- });
+ IllegalStateException.class, (Callable<Type>) () -> Types.required(type).as(logicalType).named("col"));
}
assertThrows("Should reject non-int32 type: FIXED_LEN_BYTE_ARRAY",
- IllegalStateException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.required(FIXED_LEN_BYTE_ARRAY).length(1)
- .as(logicalType).named("col");
- }
- });
+ IllegalStateException.class, (Callable<Type>) () -> Types.required(FIXED_LEN_BYTE_ARRAY).length(1)
+ .as(logicalType).named("col"));
}
}
@@ -531,21 +446,11 @@ public class TestTypeBuilders {
};
for (final PrimitiveTypeName type : nonInt64) {
assertThrows("Should reject non-int64 type: " + type,
- IllegalStateException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.required(type).as(logicalType).named("col");
- }
- });
+ IllegalStateException.class, (Callable<Type>) () -> Types.required(type).as(logicalType).named("col"));
}
assertThrows("Should reject non-int64 type: FIXED_LEN_BYTE_ARRAY",
- IllegalStateException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.required(FIXED_LEN_BYTE_ARRAY).length(1)
- .as(logicalType).named("col");
- }
- });
+ IllegalStateException.class, (Callable<Type>) () -> Types.required(FIXED_LEN_BYTE_ARRAY).length(1)
+ .as(logicalType).named("col"));
}
}
@@ -564,25 +469,15 @@ public class TestTypeBuilders {
};
for (final PrimitiveTypeName type : nonFixed) {
assertThrows("Should reject non-fixed type: " + type,
- IllegalStateException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.required(type).as(INTERVAL).named("interval");
- }
- });
+ IllegalStateException.class, (Callable<Type>) () -> Types.required(type).as(INTERVAL).named("interval"));
}
}
@Test
public void testIntervalAnnotationRejectsNonFixed12() {
assertThrows("Should reject fixed with length != 12: " + 11,
- IllegalStateException.class, new Callable<Type>() {
- @Override
- public Type call() throws Exception {
- return Types.required(FIXED_LEN_BYTE_ARRAY).length(11)
- .as(INTERVAL).named("interval");
- }
- });
+ IllegalStateException.class, (Callable<Type>) () -> Types.required(FIXED_LEN_BYTE_ARRAY).length(11)
+ .as(INTERVAL).named("interval"));
}
@Test
@@ -1384,19 +1279,11 @@ public class TestTypeBuilders {
@Test
public void testTypeConstructionWithUnsupportedColumnOrder() {
- assertThrows(null, IllegalArgumentException.class, new Callable<PrimitiveType>() {
- @Override
- public PrimitiveType call() {
- return Types.optional(INT96).columnOrder(ColumnOrder.typeDefined()).named("int96_unsupported");
- }
- });
- assertThrows(null, IllegalArgumentException.class, new Callable<PrimitiveType>() {
- @Override
- public PrimitiveType call() {
- return Types.optional(PrimitiveTypeName.FIXED_LEN_BYTE_ARRAY).length(12).as(INTERVAL)
- .columnOrder(ColumnOrder.typeDefined()).named("interval_unsupported");
- }
- });
+ assertThrows(null, IllegalArgumentException.class,
+ (Callable<PrimitiveType>) () -> Types.optional(INT96).columnOrder(ColumnOrder.typeDefined()).named("int96_unsupported"));
+ assertThrows(null, IllegalArgumentException.class,
+ (Callable<PrimitiveType>) () -> Types.optional(FIXED_LEN_BYTE_ARRAY).length(12).as(INTERVAL)
+ .columnOrder(ColumnOrder.typeDefined()).named("interval_unsupported"));
}
@Test
diff --git a/parquet-column/src/test/java/org/apache/parquet/schema/TestTypeUtil.java b/parquet-column/src/test/java/org/apache/parquet/schema/TestTypeUtil.java
index 12ee3e1..d941543 100644
--- a/parquet-column/src/test/java/org/apache/parquet/schema/TestTypeUtil.java
+++ b/parquet-column/src/test/java/org/apache/parquet/schema/TestTypeUtil.java
@@ -37,13 +37,10 @@ public class TestTypeUtil {
TestTypeBuilders.assertThrows("Should complain about empty MessageType",
InvalidSchemaException.class,
- new Callable<Void>() {
- @Override
- public Void call() throws Exception {
- TypeUtil.checkValidWriteSchema(new MessageType("invalid_schema"));
- return null;
- }
- });
+ (Callable<Void>) () -> {
+ TypeUtil.checkValidWriteSchema(new MessageType("invalid_schema"));
+ return null;
+ });
}
@Test
@@ -55,14 +52,11 @@ public class TestTypeUtil {
TestTypeBuilders.assertThrows("Should complain about empty GroupType",
InvalidSchemaException.class,
- new Callable<Void>() {
- @Override
- public Void call() throws Exception {
- TypeUtil.checkValidWriteSchema(
- new GroupType(REPEATED, "invalid_group"));
- return null;
- }
- });
+ (Callable<Void>) () -> {
+ TypeUtil.checkValidWriteSchema(
+ new GroupType(REPEATED, "invalid_group"));
+ return null;
+ });
}
@Test
@@ -76,14 +70,11 @@ public class TestTypeUtil {
TestTypeBuilders.assertThrows("Should complain about empty GroupType",
InvalidSchemaException.class,
- new Callable<Void>() {
- @Override
- public Void call() throws Exception {
- TypeUtil.checkValidWriteSchema(Types.buildMessage()
- .addField(new GroupType(REPEATED, "invalid_group"))
- .named("invalid_message"));
- return null;
- }
- });
+ (Callable<Void>) () -> {
+ TypeUtil.checkValidWriteSchema(Types.buildMessage()
+ .addField(new GroupType(REPEATED, "invalid_group"))
+ .named("invalid_message"));
+ return null;
+ });
}
}
diff --git a/parquet-common/src/test/java/org/apache/parquet/bytes/TestByteBufferInputStreams.java b/parquet-common/src/test/java/org/apache/parquet/bytes/TestByteBufferInputStreams.java
index 6151c0a..0dc565f 100644
--- a/parquet-common/src/test/java/org/apache/parquet/bytes/TestByteBufferInputStreams.java
+++ b/parquet-common/src/test/java/org/apache/parquet/bytes/TestByteBufferInputStreams.java
@@ -176,12 +176,7 @@ public abstract class TestByteBufferInputStreams {
}
assertThrows("Should throw EOFException at end of stream",
- EOFException.class, new Callable<Integer>() {
- @Override
- public Integer call() throws IOException {
- return stream.read();
- }
- });
+ EOFException.class, (Callable<Integer>) stream::read);
checkOriginalData();
}
@@ -233,12 +228,7 @@ public abstract class TestByteBufferInputStreams {
Assert.assertEquals("Should consume all buffers", length, stream.position());
assertThrows("Should throw EOFException when empty",
- EOFException.class, new Callable<List<ByteBuffer>>() {
- @Override
- public List<ByteBuffer> call() throws Exception {
- return stream.sliceBuffers(length);
- }
- });
+ EOFException.class, (Callable<List<ByteBuffer>>) () -> stream.sliceBuffers(length));
ByteBufferInputStream copy = ByteBufferInputStream.wrap(buffers);
for (int i = 0; i < length; i += 1) {
@@ -365,12 +355,9 @@ public abstract class TestByteBufferInputStreams {
final int length = stream2.available();
assertThrows("Should throw when out of bytes",
- EOFException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- stream2.skipFully(length + 10);
- return null;
- }
+ EOFException.class, () -> {
+ stream2.skipFully(length + 10);
+ return null;
});
}
@@ -499,12 +486,9 @@ public abstract class TestByteBufferInputStreams {
final ByteBufferInputStream stream = newStream();
assertThrows("Should throw an error for reset() without mark()",
- IOException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- stream.reset();
- return null;
- }
+ IOException.class, () -> {
+ stream.reset();
+ return null;
});
}
@@ -549,12 +533,9 @@ public abstract class TestByteBufferInputStreams {
Assert.assertEquals("Should read 6 bytes", 6, stream.read(new byte[6]));
assertThrows("Should throw an error for reset() after limit",
- IOException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- stream.reset();
- return null;
- }
+ IOException.class, () -> {
+ stream.reset();
+ return null;
});
}
@@ -568,12 +549,9 @@ public abstract class TestByteBufferInputStreams {
stream.reset();
assertThrows("Should throw an error for double reset()",
- IOException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- stream.reset();
- return null;
- }
+ IOException.class, () -> {
+ stream.reset();
+ return null;
});
}
diff --git a/parquet-common/src/test/java/org/apache/parquet/io/TestDelegatingSeekableInputStream.java b/parquet-common/src/test/java/org/apache/parquet/io/TestDelegatingSeekableInputStream.java
index 078bc8f..a9150dd 100644
--- a/parquet-common/src/test/java/org/apache/parquet/io/TestDelegatingSeekableInputStream.java
+++ b/parquet-common/src/test/java/org/apache/parquet/io/TestDelegatingSeekableInputStream.java
@@ -68,12 +68,9 @@ public class TestDelegatingSeekableInputStream {
Assert.assertEquals("Stream position should reflect bytes read", 10, stream.getPos());
TestUtils.assertThrows("Should throw EOFException if no more bytes left",
- EOFException.class, new Callable<Void>() {
- @Override
- public Void call() throws IOException {
- DelegatingSeekableInputStream.readFully(stream, buffer, 0, 1);
- return null;
- }
+ EOFException.class, (Callable<Void>) () -> {
+ DelegatingSeekableInputStream.readFully(stream, buffer, 0, 1);
+ return null;
});
}
@@ -84,12 +81,9 @@ public class TestDelegatingSeekableInputStream {
final MockInputStream stream = new MockInputStream(2, 3, 3);
TestUtils.assertThrows("Should throw EOFException if no more bytes left",
- EOFException.class, new Callable<Void>() {
- @Override
- public Void call() throws IOException {
- DelegatingSeekableInputStream.readFully(stream, buffer, 0, buffer.length);
- return null;
- }
+ EOFException.class, (Callable<Void>) () -> {
+ DelegatingSeekableInputStream.readFully(stream, buffer, 0, buffer.length);
+ return null;
});
Assert.assertArrayEquals("Should have consumed bytes",
@@ -131,12 +125,7 @@ public class TestDelegatingSeekableInputStream {
Assert.assertEquals("Stream position should reflect bytes read", 5, stream.getPos());
}
- private static final ThreadLocal<byte[]> TEMP = new ThreadLocal<byte[]>() {
- @Override
- protected byte[] initialValue() {
- return new byte[8192];
- }
- };
+ private static final ThreadLocal<byte[]> TEMP = ThreadLocal.withInitial(() -> new byte[8192]);
@Test
public void testHeapRead() throws Exception {
@@ -523,12 +512,9 @@ public class TestDelegatingSeekableInputStream {
final MockInputStream stream = new MockInputStream();
TestUtils.assertThrows("Should throw EOFException",
- EOFException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- DelegatingSeekableInputStream.readFullyHeapBuffer(stream, readBuffer);
- return null;
- }
+ EOFException.class, () -> {
+ DelegatingSeekableInputStream.readFullyHeapBuffer(stream, readBuffer);
+ return null;
});
Assert.assertEquals(0, readBuffer.position());
@@ -684,12 +670,9 @@ public class TestDelegatingSeekableInputStream {
final MockInputStream stream = new MockInputStream();
TestUtils.assertThrows("Should throw EOFException",
- EOFException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- DelegatingSeekableInputStream.readFullyDirectBuffer(stream, readBuffer, TEMP.get());
- return null;
- }
+ EOFException.class, () -> {
+ DelegatingSeekableInputStream.readFullyDirectBuffer(stream, readBuffer, TEMP.get());
+ return null;
});
// NOTE: This behavior differs from readFullyHeapBuffer because direct uses
diff --git a/parquet-common/src/test/java/org/apache/parquet/util/TestDynConstructors.java b/parquet-common/src/test/java/org/apache/parquet/util/TestDynConstructors.java
index 1ab9582..2a8a58f 100644
--- a/parquet-common/src/test/java/org/apache/parquet/util/TestDynConstructors.java
+++ b/parquet-common/src/test/java/org/apache/parquet/util/TestDynConstructors.java
@@ -31,20 +31,10 @@ public class TestDynConstructors {
final DynConstructors.Builder builder = new DynConstructors.Builder();
TestUtils.assertThrows("Checked build should throw NoSuchMethodException",
- NoSuchMethodException.class, new Callable() {
- @Override
- public Object call() throws NoSuchMethodException {
- return builder.buildChecked();
- }
- });
+ NoSuchMethodException.class, (Callable) builder::buildChecked);
TestUtils.assertThrows("Normal build should throw RuntimeException",
- RuntimeException.class, new Runnable() {
- @Override
- public void run() {
- builder.build();
- }
- });
+ RuntimeException.class, (Runnable) builder::build);
}
@Test
@@ -53,20 +43,10 @@ public class TestDynConstructors {
.impl("not.a.RealClass");
TestUtils.assertThrows("Checked build should throw NoSuchMethodException",
- NoSuchMethodException.class, new Callable() {
- @Override
- public Object call() throws NoSuchMethodException {
- return builder.buildChecked();
- }
- });
+ NoSuchMethodException.class, (Callable) builder::buildChecked);
TestUtils.assertThrows("Normal build should throw RuntimeException",
- RuntimeException.class, new Runnable() {
- @Override
- public void run() {
- builder.build();
- }
- });
+ RuntimeException.class, (Callable) builder::build);
}
@Test
@@ -75,20 +55,10 @@ public class TestDynConstructors {
.impl(Concatenator.class, String.class, String.class);
TestUtils.assertThrows("Checked build should throw NoSuchMethodException",
- NoSuchMethodException.class, new Callable() {
- @Override
- public Object call() throws NoSuchMethodException {
- return builder.buildChecked();
- }
- });
+ NoSuchMethodException.class, (Callable) builder::buildChecked);
TestUtils.assertThrows("Normal build should throw RuntimeException",
- RuntimeException.class, new Runnable() {
- @Override
- public void run() {
- builder.build();
- }
- });
+ RuntimeException.class, (Callable) builder::build);
}
@Test
@@ -104,20 +74,10 @@ public class TestDynConstructors {
"a-b", dashCat.concat("a", "b"));
TestUtils.assertThrows("Should complain about extra arguments",
- IllegalArgumentException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- return sepCtor.newInstanceChecked("/", "-");
- }
- });
+ IllegalArgumentException.class, () -> sepCtor.newInstanceChecked("/", "-"));
TestUtils.assertThrows("Should complain about extra arguments",
- IllegalArgumentException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- return sepCtor.newInstance("/", "-");
- }
- });
+ IllegalArgumentException.class, () -> sepCtor.newInstance("/", "-"));
DynConstructors.Ctor<Concatenator> defaultCtor = new DynConstructors.Builder()
.impl("not.a.RealClass", String.class)
@@ -139,20 +99,10 @@ public class TestDynConstructors {
.buildChecked();
TestUtils.assertThrows("Should re-throw the exception",
- SomeCheckedException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- return sepCtor.newInstanceChecked(exc);
- }
- });
+ SomeCheckedException.class, () -> sepCtor.newInstanceChecked(exc));
TestUtils.assertThrows("Should wrap the exception in RuntimeException",
- RuntimeException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- return sepCtor.newInstance(exc);
- }
- });
+ RuntimeException.class, () -> sepCtor.newInstance(exc));
}
@Test
@@ -167,14 +117,9 @@ public class TestDynConstructors {
@Test
public void testHiddenMethod() throws Exception {
TestUtils.assertThrows("Should fail to find hidden method",
- NoSuchMethodException.class, new Callable() {
- @Override
- public Object call() throws NoSuchMethodException {
- return new DynMethods.Builder("setSeparator")
- .impl(Concatenator.class, char.class)
- .buildChecked();
- }
- });
+ NoSuchMethodException.class, () -> new DynMethods.Builder("setSeparator")
+ .impl(Concatenator.class, char.class)
+ .buildChecked());
final DynConstructors.Ctor<Concatenator> sepCtor = new DynConstructors.Builder()
.hiddenImpl(Concatenator.class.getName(), char.class)
@@ -197,12 +142,7 @@ public class TestDynConstructors {
Assert.assertTrue("Should always be static", ctor.isStatic());
TestUtils.assertThrows("Should complain that method is static",
- IllegalStateException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- return ctor.bind(null);
- }
- });
+ IllegalStateException.class, () -> ctor.bind(null));
}
@Test
@@ -212,20 +152,10 @@ public class TestDynConstructors {
.buildChecked();
TestUtils.assertThrows("Should complain that target must be null",
- IllegalArgumentException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- return ctor.invokeChecked("a");
- }
- });
+ IllegalArgumentException.class, () -> ctor.invokeChecked("a"));
TestUtils.assertThrows("Should complain that target must be null",
- IllegalArgumentException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- return ctor.invoke("a");
- }
- });
+ IllegalArgumentException.class, () -> ctor.invoke("a"));
Assert.assertNotNull("Should allow invokeChecked(null, ...)",
ctor.invokeChecked(null));
diff --git a/parquet-common/src/test/java/org/apache/parquet/util/TestDynMethods.java b/parquet-common/src/test/java/org/apache/parquet/util/TestDynMethods.java
index 7017c67..f2e832f 100644
--- a/parquet-common/src/test/java/org/apache/parquet/util/TestDynMethods.java
+++ b/parquet-common/src/test/java/org/apache/parquet/util/TestDynMethods.java
@@ -31,20 +31,10 @@ public class TestDynMethods {
final DynMethods.Builder builder = new DynMethods.Builder("concat");
TestUtils.assertThrows("Checked build should throw NoSuchMethodException",
- NoSuchMethodException.class, new Callable() {
- @Override
- public Object call() throws NoSuchMethodException {
- return builder.buildChecked();
- }
- });
+ NoSuchMethodException.class, (Callable) builder::buildChecked);
TestUtils.assertThrows("Normal build should throw RuntimeException",
- RuntimeException.class, new Runnable() {
- @Override
- public void run() {
- builder.build();
- }
- });
+ RuntimeException.class, (Callable) builder::build);
}
@Test
@@ -53,20 +43,10 @@ public class TestDynMethods {
.impl("not.a.RealClass", String.class, String.class);
TestUtils.assertThrows("Checked build should throw NoSuchMethodException",
- NoSuchMethodException.class, new Callable() {
- @Override
- public Object call() throws NoSuchMethodException {
- return builder.buildChecked();
- }
- });
+ NoSuchMethodException.class, (Callable) builder::buildChecked);
TestUtils.assertThrows("Normal build should throw RuntimeException",
- RuntimeException.class, new Runnable() {
- @Override
- public void run() {
- builder.build();
- }
- });
+ RuntimeException.class, (Runnable) builder::build);
}
@Test
@@ -75,20 +55,10 @@ public class TestDynMethods {
.impl(Concatenator.class, "cat2strings", String.class, String.class);
TestUtils.assertThrows("Checked build should throw NoSuchMethodException",
- NoSuchMethodException.class, new Callable() {
- @Override
- public Object call() throws NoSuchMethodException {
- return builder.buildChecked();
- }
- });
+ NoSuchMethodException.class, (Callable) builder::buildChecked);
TestUtils.assertThrows("Normal build should throw RuntimeException",
- RuntimeException.class, new Runnable() {
- @Override
- public void run() {
- builder.build();
- }
- });
+ RuntimeException.class, (Runnable) builder::build);
}
@Test
@@ -144,20 +114,10 @@ public class TestDynMethods {
.buildChecked();
TestUtils.assertThrows("Should fail if non-string arguments are passed",
- IllegalArgumentException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- return cat.invoke(obj, 3, 4);
- }
- });
+ IllegalArgumentException.class, () -> cat.invoke(obj, 3, 4));
TestUtils.assertThrows("Should fail if non-string arguments are passed",
- IllegalArgumentException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- return cat.invokeChecked(obj, 3, 4);
- }
- });
+ IllegalArgumentException.class, () -> cat.invokeChecked(obj, 3, 4));
}
@Test
@@ -170,20 +130,10 @@ public class TestDynMethods {
.buildChecked();
TestUtils.assertThrows("Should re-throw the exception",
- SomeCheckedException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- return cat.invokeChecked(obj, exc);
- }
- });
+ SomeCheckedException.class, () -> cat.invokeChecked(obj, exc));
TestUtils.assertThrows("Should wrap the exception in RuntimeException",
- RuntimeException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- return cat.invoke(obj, exc);
- }
- });
+ RuntimeException.class, () -> cat.invoke(obj, exc));
}
@Test
@@ -213,14 +163,9 @@ public class TestDynMethods {
Concatenator obj = new Concatenator("-");
TestUtils.assertThrows("Should fail to find hidden method",
- NoSuchMethodException.class, new Callable() {
- @Override
- public Object call() throws NoSuchMethodException {
- return new DynMethods.Builder("setSeparator")
- .impl(Concatenator.class, String.class)
- .buildChecked();
- }
- });
+ NoSuchMethodException.class, () -> new DynMethods.Builder("setSeparator")
+ .impl(Concatenator.class, String.class)
+ .buildChecked());
DynMethods.UnboundMethod changeSep = new DynMethods.Builder("setSeparator")
.hiddenImpl(Concatenator.class, String.class)
@@ -264,31 +209,16 @@ public class TestDynMethods {
.impl(Concatenator.class, String[].class);
TestUtils.assertThrows("Should complain that method is static",
- IllegalStateException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- return builder.buildChecked(new Concatenator());
- }
- });
+ IllegalStateException.class, () -> builder.buildChecked(new Concatenator()));
TestUtils.assertThrows("Should complain that method is static",
- IllegalStateException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- return builder.build(new Concatenator());
- }
- });
+ IllegalStateException.class, () -> builder.build(new Concatenator()));
final DynMethods.UnboundMethod staticCat = builder.buildChecked();
Assert.assertTrue("Should be static", staticCat.isStatic());
TestUtils.assertThrows("Should complain that method is static",
- IllegalStateException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- return staticCat.bind(new Concatenator());
- }
- });
+ IllegalStateException.class, () -> staticCat.bind(new Concatenator()));
}
@Test
@@ -308,32 +238,17 @@ public class TestDynMethods {
.impl(Concatenator.class, String.class, String.class);
TestUtils.assertThrows("Should complain that method is not static",
- IllegalStateException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- return builder.buildStatic();
- }
- });
+ IllegalStateException.class, builder::buildStatic);
TestUtils.assertThrows("Should complain that method is not static",
- IllegalStateException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- return builder.buildStaticChecked();
- }
- });
+ IllegalStateException.class, builder::buildStaticChecked);
final DynMethods.UnboundMethod cat2 = builder.buildChecked();
Assert.assertFalse("concat(String,String) should not be static",
cat2.isStatic());
TestUtils.assertThrows("Should complain that method is not static",
- IllegalStateException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- return cat2.asStatic();
- }
- });
+ IllegalStateException.class, cat2::asStatic);
}
@Test
@@ -352,19 +267,9 @@ public class TestDynMethods {
// constructors cannot be bound
TestUtils.assertThrows("Should complain that ctor method is static",
- IllegalStateException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- return builder.buildChecked(new Concatenator());
- }
- });
+ IllegalStateException.class, () -> builder.buildChecked(new Concatenator()));
TestUtils.assertThrows("Should complain that ctor method is static",
- IllegalStateException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- return builder.build(new Concatenator());
- }
- });
+ IllegalStateException.class, () -> builder.build(new Concatenator()));
Concatenator concatenator = newConcatenator.asStatic().invoke("*");
Assert.assertEquals("Should function as a concatenator",
diff --git a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetFileReader.java b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetFileReader.java
index c08dc6c..e71331f 100644
--- a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetFileReader.java
+++ b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetFileReader.java
@@ -160,30 +160,27 @@ public class ParquetFileReader implements Closeable {
// read corresponding summary files if they exist
List<Callable<Map<Path, Footer>>> summaries = new ArrayList<Callable<Map<Path, Footer>>>();
for (final Path path : parents) {
- summaries.add(new Callable<Map<Path, Footer>>() {
- @Override
- public Map<Path, Footer> call() throws Exception {
- ParquetMetadata mergedMetadata = readSummaryMetadata(configuration, path, skipRowGroups);
- if (mergedMetadata != null) {
- final List<Footer> footers;
- if (skipRowGroups) {
- footers = new ArrayList<Footer>();
- for (FileStatus f : partFiles) {
- footers.add(new Footer(f.getPath(), mergedMetadata));
- }
- } else {
- footers = footersFromSummaryFile(path, mergedMetadata);
+ summaries.add(() -> {
+ ParquetMetadata mergedMetadata = readSummaryMetadata(configuration, path, skipRowGroups);
+ if (mergedMetadata != null) {
+ final List<Footer> footers;
+ if (skipRowGroups) {
+ footers = new ArrayList<Footer>();
+ for (FileStatus f : partFiles) {
+ footers.add(new Footer(f.getPath(), mergedMetadata));
}
- Map<Path, Footer> map = new HashMap<Path, Footer>();
- for (Footer footer : footers) {
- // the folder may have been moved
- footer = new Footer(new Path(path, footer.getFile().getName()), footer.getParquetMetadata());
- map.put(footer.getFile(), footer);
- }
- return map;
} else {
- return Collections.emptyMap();
+ footers = footersFromSummaryFile(path, mergedMetadata);
+ }
+ Map<Path, Footer> map = new HashMap<Path, Footer>();
+ for (Footer footer : footers) {
+ // the folder may have been moved
+ footer = new Footer(new Path(path, footer.getFile().getName()), footer.getParquetMetadata());
+ map.put(footer.getFile(), footer);
}
+ return map;
+ } else {
+ return Collections.emptyMap();
}
});
}
@@ -268,14 +265,11 @@ public class ParquetFileReader implements Closeable {
public static List<Footer> readAllFootersInParallel(final Configuration configuration, List<FileStatus> partFiles, final boolean skipRowGroups) throws IOException {
List<Callable<Footer>> footers = new ArrayList<Callable<Footer>>();
for (final FileStatus currentFile : partFiles) {
- footers.add(new Callable<Footer>() {
- @Override
- public Footer call() throws Exception {
- try {
- return new Footer(currentFile.getPath(), readFooter(configuration, currentFile, filter(skipRowGroups)));
- } catch (IOException e) {
- throw new IOException("Could not read footer for file " + currentFile, e);
- }
+ footers.add(() -> {
+ try {
+ return new Footer(currentFile.getPath(), readFooter(configuration, currentFile, filter(skipRowGroups)));
+ } catch (IOException e) {
+ throw new IOException("Could not read footer for file " + currentFile, e);
}
});
}
diff --git a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetFileWriter.java b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetFileWriter.java
index 50cd31e..f352391 100644
--- a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetFileWriter.java
+++ b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/ParquetFileWriter.java
@@ -813,13 +813,7 @@ public class ParquetFileWriter {
}
// Buffers for the copy function.
- private static final ThreadLocal<byte[]> COPY_BUFFER =
- new ThreadLocal<byte[]>() {
- @Override
- protected byte[] initialValue() {
- return new byte[8192];
- }
- };
+ private static final ThreadLocal<byte[]> COPY_BUFFER = ThreadLocal.withInitial(() -> new byte[8192]);
/**
* Copy from a FS input stream to an output stream. Thread-safe
diff --git a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/PrintFooter.java b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/PrintFooter.java
index e04ea62..b73b873 100644
--- a/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/PrintFooter.java
+++ b/parquet-hadoop/src/main/java/org/apache/parquet/hadoop/PrintFooter.java
@@ -92,15 +92,11 @@ public class PrintFooter {
long t0 = System.currentTimeMillis();
Deque<Future<ParquetMetadata>> footers = new LinkedBlockingDeque<Future<ParquetMetadata>>();
for (final FileStatus currentFile : statuses) {
- footers.add(threadPool.submit(new Callable<ParquetMetadata>() {
- @Override
- public ParquetMetadata call() throws Exception {
- try {
- ParquetMetadata footer = ParquetFileReader.readFooter(configuration, currentFile, NO_FILTER);
- return footer;
- } catch (Exception e) {
- throw new ParquetDecodingException("could not read footer", e);
- }
+ footers.add(threadPool.submit(() -> {
+ try {
+ return ParquetFileReader.readFooter(configuration, currentFile, NO_FILTER);
+ } catch (Exception e) {
+ throw new ParquetDecodingException("could not read footer", e);
}
}));
}
diff --git a/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/TestMemoryManager.java b/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/TestMemoryManager.java
index 115a6c1..836ca6d 100644
--- a/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/TestMemoryManager.java
+++ b/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/TestMemoryManager.java
@@ -134,12 +134,7 @@ public class TestMemoryManager {
Assert.assertTrue("Pool should not hold 3 full row groups",
poolSize < (3 * rowGroupSize));
- Runnable callback = new Runnable() {
- @Override
- public void run() {
- counter++;
- }
- };
+ Runnable callback = () -> counter++;
// first-time registration should succeed
ParquetOutputFormat.getMemoryManager()
diff --git a/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/TestParquetWriter.java b/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/TestParquetWriter.java
index 25c9608..c837d9a 100644
--- a/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/TestParquetWriter.java
+++ b/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/TestParquetWriter.java
@@ -157,16 +157,13 @@ public class TestParquetWriter {
file.delete();
TestUtils.assertThrows("Should reject a schema with an empty group",
- InvalidSchemaException.class, new Callable<Void>() {
- @Override
- public Void call() throws IOException {
- ExampleParquetWriter.builder(new Path(file.toString()))
- .withType(Types.buildMessage()
- .addField(new GroupType(REQUIRED, "invalid_group"))
- .named("invalid_message"))
- .build();
- return null;
- }
+ InvalidSchemaException.class, (Callable<Void>) () -> {
+ ExampleParquetWriter.builder(new Path(file.toString()))
+ .withType(Types.buildMessage()
+ .addField(new GroupType(REQUIRED, "invalid_group"))
+ .named("invalid_message"))
+ .build();
+ return null;
});
Assert.assertFalse("Should not create a file when schema is rejected",
diff --git a/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/TestParquetWriterAppendBlocks.java b/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/TestParquetWriterAppendBlocks.java
index ae37f63..bda5333 100644
--- a/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/TestParquetWriterAppendBlocks.java
+++ b/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/TestParquetWriterAppendBlocks.java
@@ -269,13 +269,10 @@ public class TestParquetWriterAppendBlocks {
TestUtils.assertThrows("Should complain that id column is dropped",
IllegalArgumentException.class,
- new Callable<Void>() {
- @Override
- public Void call() throws Exception {
- writer.appendRowGroups(incoming, footer.getBlocks(), false);
- return null;
- }
- });
+ (Callable<Void>) () -> {
+ writer.appendRowGroups(incoming, footer.getBlocks(), false);
+ return null;
+ });
}
@Test
@@ -293,13 +290,10 @@ public class TestParquetWriterAppendBlocks {
TestUtils.assertThrows("Should complain that value column is missing",
IllegalArgumentException.class,
- new Callable<Void>() {
- @Override
- public Void call() throws Exception {
- writer.appendFile(CONF, file1);
- return null;
- }
- });
+ (Callable<Void>) () -> {
+ writer.appendFile(CONF, file1);
+ return null;
+ });
}
private Path newTemp() throws IOException {
diff --git a/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/util/TestHadoop2ByteBufferReads.java b/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/util/TestHadoop2ByteBufferReads.java
index 68c9b3b..1b1e373 100644
--- a/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/util/TestHadoop2ByteBufferReads.java
+++ b/parquet-hadoop/src/test/java/org/apache/parquet/hadoop/util/TestHadoop2ByteBufferReads.java
@@ -83,12 +83,9 @@ public class TestHadoop2ByteBufferReads {
final MockBufferReader reader = new MockBufferReader(hadoopStream);
TestUtils.assertThrows("Should throw EOFException",
- EOFException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- H2SeekableInputStream.readFully(reader, readBuffer);
- return null;
- }
+ EOFException.class, () -> {
+ H2SeekableInputStream.readFully(reader, readBuffer);
+ return null;
});
// NOTE: This behavior differs from readFullyHeapBuffer because direct uses
@@ -257,12 +254,9 @@ public class TestHadoop2ByteBufferReads {
final MockBufferReader reader = new MockBufferReader(hadoopStream);
TestUtils.assertThrows("Should throw EOFException",
- EOFException.class, new Callable() {
- @Override
- public Object call() throws Exception {
- H2SeekableInputStream.readFully(reader, readBuffer);
- return null;
- }
+ EOFException.class, () -> {
+ H2SeekableInputStream.readFully(reader, readBuffer);
+ return null;
});
// NOTE: This behavior differs from readFullyHeapBuffer because direct uses