diff --git a/parquet-hadoop-no-mapreduce-test/pom.xml b/parquet-hadoop-no-mapreduce-test/pom.xml index edee804aa5..cc46db2cd8 100644 --- a/parquet-hadoop-no-mapreduce-test/pom.xml +++ b/parquet-hadoop-no-mapreduce-test/pom.xml @@ -43,6 +43,18 @@ + + org.apache.parquet + parquet-common + ${project.version} + test + + + org.apache.parquet + parquet-column + ${project.version} + test + org.apache.parquet parquet-hadoop diff --git a/parquet-hadoop-no-mapreduce-test/src/test/java/org/apache/parquet/hadoop/ParquetReadOptionsWithoutMapReduceTest.java b/parquet-hadoop-no-mapreduce-test/src/test/java/org/apache/parquet/hadoop/ParquetReadOptionsWithoutMapReduceTest.java index 2c846ddba7..61e939ae0d 100644 --- a/parquet-hadoop-no-mapreduce-test/src/test/java/org/apache/parquet/hadoop/ParquetReadOptionsWithoutMapReduceTest.java +++ b/parquet-hadoop-no-mapreduce-test/src/test/java/org/apache/parquet/hadoop/ParquetReadOptionsWithoutMapReduceTest.java @@ -18,10 +18,28 @@ */ package org.apache.parquet.hadoop; +import static org.apache.parquet.schema.Types.primitive; import static org.assertj.core.api.Assertions.assertThatCode; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.Assertions.assertEquals; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import org.apache.hadoop.conf.Configuration; import org.apache.parquet.ParquetReadOptions; +import org.apache.parquet.example.data.Group; +import org.apache.parquet.example.data.simple.SimpleGroupFactory; +import org.apache.parquet.hadoop.api.ReadSupport; +import org.apache.parquet.hadoop.example.ExampleParquetWriter; +import org.apache.parquet.hadoop.example.GroupReadSupport; +import org.apache.parquet.hadoop.example.GroupWriteSupport; +import org.apache.parquet.io.LocalInputFile; +import org.apache.parquet.io.LocalOutputFile; +import org.apache.parquet.schema.MessageType; +import org.apache.parquet.schema.PrimitiveType; +import org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName; +import org.apache.parquet.schema.Type.Repetition; import org.junit.jupiter.api.Test; class ParquetReadOptionsWithoutMapReduceTest { @@ -33,4 +51,44 @@ void buildsReadOptionsWithoutMapReduce() { assertThatCode(() -> ParquetReadOptions.builder().build()).doesNotThrowAnyException(); } + + @Test + void canWriteAndReadFiles() throws IOException { + Path path = Files.createTempDirectory("sample").resolve(java.util.UUID.randomUUID() + ".parquet"); + Configuration conf = new Configuration(); + + PrimitiveType id = + primitive(PrimitiveTypeName.INT32, Repetition.OPTIONAL).named("id"); + MessageType schema = new MessageType("schema", id); + GroupWriteSupport.setSchema(schema, conf); + + SimpleGroupFactory f = new SimpleGroupFactory(schema); + LocalOutputFile localOutputFile = new LocalOutputFile(path); + try (ParquetWriter writer = + ExampleParquetWriter.builder(localOutputFile).withConf(conf).build()) { + writer.write(f.newGroup().append("id", 1)); + writer.write(f.newGroup().append("id", 2)); + } + + LocalInputFile readFile = new LocalInputFile(path); + try (ParquetReader reader = + new GroupReaderBuilder().withFile(readFile).build()) { + Group group1 = reader.read(); + assertEquals(1, group1.getInteger("id", 0)); + Group group2 = reader.read(); + assertEquals(2, group2.getInteger("id", 0)); + } + } + + public static class GroupReaderBuilder extends ParquetReader.Builder { + + public GroupReaderBuilder() { + super(); + } + + @Override + public ReadSupport getReadSupport() { + return new GroupReadSupport(); + } + } }