当前位置: 首页 > 知识库问答 >
问题:

从Avro GenericRecord获取类型化值

萧和平
2023-03-14

给定GenericRecord,与对象相比,检索类型化值的推荐方法是什么?我们需要强制转换值吗?如果需要,从Avro类型到Java类型的映射是什么?例如,Avro数组==Java集合;和Avro String==Java UTF8。

由于每个GenericRecord都包含它的模式,所以我希望有一种类型安全的方法来检索值。

共有1个答案

费子濯
2023-03-14

Avro有八个基本类型和五个复杂类型(不包括联合,它是其他类型的组合)。下表将这13个Avro类型映射到它们的输入接口(Java类型可以put放入GenericRecord)和它们的输出实现(具体的Java类型,由GenericRecordGet从GenericRecord返回)。这些值适用于Avro 1.7.7。

<代码>ger long java.lang.long java.lang.long float java.lang.float double java.lang.double java.lang.double java.lang.double bytes java.nio.byteBuffer java.nio.heapbyteBuffer string java.lang.heapbyteBuffer string java.lang.charsequence org.apache.Avro.util.utf8记录*.genericRecord*.genericData$record enum*.genericdata$固定

在Avro 1.8.0中,enum类型需要genericenumsymbol。它不再接受CharSequence

 类似资料:
  • 我正在与Avro合作,我有一个通用记录。我想从中提取clientId、deviceName、holder。在Avro模式中,

  • 我有一个类,它将我的jpa实体转换为到,反之亦然。 当我在方法中进行转换时,返回的是,我需要它是。 是否可以迭代此集合()并获取“to”值? 转炉 转炉生产者

  • 问题内容: 我有一个名字叫类的名字(没有扩展名)。我想将其分配给变量,如下所示: 我怎样才能做到这一点? 问题答案: 但是您应该是完全合格的-即

  • 我正在为任何模板化的类实现一个类型提取器。示例用法如下所示: 我怎样才能解决这个问题?

  • 问题内容: 通常,我见过人们像这样使用类文字: 但是,如果类型是通用类型,例如List,该怎么办?这可以正常工作,但由于应将List参数化,因此发出警告: 那么为什么不添加一个<?>呢?好吧,这会导致类型不匹配错误: 我想像这样的事情会起作用,但这只是一个普通的语法错误: 如何获得Class >静态信息,例如使用类文字? 我可以使用,以摆脱在第一个例子中所造成的非参数使用列表,警告的,但我宁愿不要

  • 问题内容: 说我有一个像这样的父接口/类 还有许多实现通用类型的实现接口。 我可以使用反射来获取的情况下代表我有没有为对象。像这样: 目前,我已经作为参数传递了,但是如果可以的话,我想简化一些事情。 问题答案: 是的,尽管什么其他人说,这个信息 是 可用的,如果你有机会到子类对象。您需要与一起使用。 在您的示例中,“实际”类型参数应返回for 。