Repository: orc Updated Branches: refs/heads/master 84fa2ff28 -> 6daa5ed44
ORC-300. Provide additional constructor to JsonReader. This allows embedding code to use it's own JsonParser implementation. Intended to plug in a parser that transforms JSON while reading (flattening nested structs, renaming and filtering capabilities). Fixes #217 Signed-off-by: Owen O'Malley <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/orc/repo Commit: http://git-wip-us.apache.org/repos/asf/orc/commit/6daa5ed4 Tree: http://git-wip-us.apache.org/repos/asf/orc/tree/6daa5ed4 Diff: http://git-wip-us.apache.org/repos/asf/orc/diff/6daa5ed4 Branch: refs/heads/master Commit: 6daa5ed44ea412e3657d32bdedc27a6515e5dc5b Parents: 84fa2ff Author: Thomas KruÌger <tkcode123> Authored: Sun Feb 11 23:33:49 2018 +0100 Committer: Owen O'Malley <[email protected]> Committed: Tue Feb 27 10:04:09 2018 -0800 ---------------------------------------------------------------------- .../java/org/apache/orc/tools/convert/JsonReader.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/orc/blob/6daa5ed4/java/tools/src/java/org/apache/orc/tools/convert/JsonReader.java ---------------------------------------------------------------------- diff --git a/java/tools/src/java/org/apache/orc/tools/convert/JsonReader.java b/java/tools/src/java/org/apache/orc/tools/convert/JsonReader.java index 5daec01..16b5d64 100644 --- a/java/tools/src/java/org/apache/orc/tools/convert/JsonReader.java +++ b/java/tools/src/java/org/apache/orc/tools/convert/JsonReader.java @@ -50,6 +50,7 @@ import java.io.InputStreamReader; import java.io.Reader; import java.nio.charset.StandardCharsets; import java.sql.Timestamp; +import java.util.Iterator; import java.util.List; import java.util.zip.GZIPInputStream; @@ -58,7 +59,7 @@ public class JsonReader implements RecordReader { "yyyy[[-][/]]MM[[-][/]]dd[['T'][ ]]HH:mm:ss[ ][XXX][X]"); private final TypeDescription schema; - private final JsonStreamParser parser; + private final Iterator<JsonElement> parser; private final JsonConverter[] converters; private final long totalSize; private final FSDataInputStream input; @@ -256,13 +257,20 @@ public class JsonReader implements RecordReader { FSDataInputStream underlying, long size, TypeDescription schema) throws IOException { + this(new JsonStreamParser(reader), underlying, size, schema); + } + + public JsonReader(Iterator<JsonElement> parser, + FSDataInputStream underlying, + long size, + TypeDescription schema) throws IOException { this.schema = schema; if (schema.getCategory() != TypeDescription.Category.STRUCT) { throw new IllegalArgumentException("Root must be struct - " + schema); } this.input = underlying; this.totalSize = size; - parser = new JsonStreamParser(reader); + this.parser = parser; List<TypeDescription> fieldTypes = schema.getChildren(); converters = new JsonConverter[fieldTypes.size()]; for(int c = 0; c < converters.length; ++c) {
