【问题标题】:Avro iterate over GenericRecordAvro 遍历 GenericRecord
【发布时间】:2019-01-17 07:49:58
【问题描述】:

我有一个 GenericRecord,并且想要遍历整个键/值集合。记录是一个 java 数据结构,相当于一个普通的 json 字符串。例如:

    {"key1":"val1","key2":val2",...} but is quite long. 

问题是,我不知道里面有多少个key,vals。

我试过了:

    AvroKeyValue<String,String> kv = new AvroKeyValue<>(record);
    Iterator<String,String> iterator = new AvroKeyValue.Iterator<String,String>(kv);

但这不起作用。

关于它的 apache 文档在这里: http://avro.apache.org/docs/1.7.0/api/java/org/apache/avro/hadoop/io/AvroKeyValue.Iterator.html

【问题讨论】:

  • 不起作用既不精确也不有用。究竟是什么不工作?

标签: java avro


【解决方案1】:

使用GenericRecord 的架构列出可用字段

for (Field field : record.getSchema().getFields()) {
    String fieldKey = field.name();
    System.out.println(fieldKey + " : " + record.get(fieldKey));
}

【讨论】:

    【解决方案2】:

    您可以通过以下方式获取GenericRecord 的字段数:

    record.getSchema().getFields().size();
    

    【讨论】:

      猜你喜欢
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 2021-03-14
      相关资源
      最近更新 更多