从实木复合地板文件中的数组中读取单个值

时间:2019-04-03 15:01:46

标签: java avro parquet

我的avro方案包含非常大的整数数组(例如数百万个整数), 在几乎所有情况下,我都只需要一个值即可。

我试图找出是否有一种方法可以将整个数组读入内存。 例如,我只想获取counters [73289]的值。

请假定这是我的Avro模式:

    {
      "type" : "record",
      "name" : "myRecord",
      "namespace" : "org.meirlo.example",
      "fields" : [ {
        "name" : "counters",
        "type" : {
          "type" : "array",
          "items" : "int",
          "java-class" : "[I"
        }
      } ]
    }

我可以更改架构,但是请记住,记录之间的数组大小是不同的。

作为参考,这是我用来读取整个文件的代码

    try (ParquetReader<MyRecord> reader = AvroParquetReader.        
    <MyRecord>builder(new LocalInputFile(dataFile))
                    .withDataModel(new ReflectData(MyRecord.class.getClassLoader()))
                    .disableCompatibility()
                    .withConf(new Configuration())
                    .build()) {

                MyRecord record;
                while ((record = reader.read()) != null) {
                    System.out.println(record);
                }
       } 

甚至可以在avro /镶木地板中做吗?

0 个答案:

没有答案