Estoy tratando de convertir el archivo JSON usando el jar de herramientas orco mencionado en
https://orc.apache.org/docs/tools.html#java-orc-tools
He importado esto en mi pom.xml
<dependency> <groupId>org.apache.orc</groupId> <artifactId>orc-tools</artifactId> <version>1.3.1</version> </dependency>Sin embargo, después de la importación, no puedo ver/importar la clase org.apache.orc.tools.json.JsonSchemaFinder que se usa para inferir el esquema de los archivos JSON.
El ejemplo que usa la clase anterior se puede ver en este compromiso. https://github.com/apache/orc/pull/95/commits/2ee0be7e60e7ca77f574110ba1babfa2a8e93f3f
¿Estoy usando el frasco equivocado aquí?
Está programado para lanzarse en la versión 1.4.0 de ORC. La versión actual 1.3.x no incluye estas funciones.
Todavía puede obtener la rama ORC git, copiar org.apache.orc.tools.convert y org.apache.orc.tools.json en su repositorio y usar estas funciones. Alternativamente, también puede hacer un jar desde el repositorio de ORC y usarlo también.
public static void main(Configuration conf, String[] args) throws IOException, ParseException { CommandLine opts = parseOptions(args); TypeDescription schema; if (opts.hasOption('s')) { schema = TypeDescription.fromString(opts.getOptionValue('s')); } else { schema = computeSchema(opts.getArgs()); } String outFilename = opts.hasOption('o') ? opts.getOptionValue('o') : "output.orc"; Writer writer = OrcFile.createWriter(new Path(outFilename), OrcFile.writerOptions(conf).setSchema(schema)); VectorizedRowBatch batch = schema.createRowBatch(); for (String file: opts.getArgs()) { System.err.println("Processing " + file); RecordReader reader = new JsonReader(new Path(file), schema, conf); while (reader.nextBatch(batch)) { writer.addRowBatch(batch); } reader.close(); } writer.close(); }