使用 orc-tools 将 JSON 转换为 ORC

Convert JSON to ORC using orc-tools

我正在尝试使用

中提到的 orc 工具 jar 转换 JSON 文件

https://orc.apache.org/docs/tools.html#java-orc-tools

我已将其导入 pom.xml

<dependency>
    <groupId>org.apache.orc</groupId>
    <artifactId>orc-tools</artifactId>
    <version>1.3.1</version>
</dependency>

但是,在导入之后,我无法 see/import class org.apache.orc.tools.json.JsonSchemaFinder 用于从 JSON 文件推断模式。

使用上述 class 的示例可以在此提交中看到。 https://github.com/apache/orc/pull/95/commits/2ee0be7e60e7ca77f574110ba1babfa2a8e93f3f

我是不是用错了jar?

这计划在 1.4.0 版本的 ORC 中发布。当前版本 1.3.x 不包含这些功能。

您仍然可以获得 ORC git 分支,将 org.apache.orc.tools.convert 和 org.apache.orc.tools.json 复制到您的存储库并使用这些功能。或者,您也可以从 ORC 存储库制作一个 jar 并使用它。

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();
}