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

如何让avro代码生成器使用不同的类型,而不是模式中预定义的基本类型和复杂类型?

傅峻
2023-03-14

我有一个简单的avro模式,如下所示:

{
        "type": "record",
        "name": "transaction",
        "namespace": "com.mycompany",
        "doc": "Transaction records",
        "fields": [

        {
                "name": "version",
                "type": "int",
                "default": 1,
                "doc": "version the class"
        },
        {
                "name": "eventType",
                "type": "string",
                "default": "saleTransaction",
                "doc": "event type"
        },
        {
                "name": "writeTimestamp",
                "type": "org.joda.time.DateTime",
                "doc": "Timestamp when this event was written to the stream"
        },
        {
                "name": "originatingClient",
                "type": "string",
                "doc": "identifier of the originating client"
        }
}

当我使用avro-maven-plugin编译它时,我得到以下错误:

错误]执行目标失败

目标组织的执行事务模式。阿帕奇。avro:avro maven插件:1.8.0:schema失败:“org.joda.time.DateTime”不是定义的名称。“writeTimestamp”字段的类型必须是定义的名称或{“类型”:…}表情-

我怎样才能让它工作?

共有1个答案

孙泳
2023-03-14

Avro目前没有日期支持,您必须将时间存储为长时间。并且不支持自定义类型,因为这意味着支持该类型的avro序列化和反序列化。

 类似资料:
  • 我有这样的代码 现在,为了打印值,如果T是一个类,我想调用对象的打印函数,但是如果T是一个基本数据类型,我只想使用printf。 那么,如何确定模板类型是基本数据类型还是类?

  • 我正在尝试使用以下方法在运行时获取Avro模式: 但由于我的POJO类包含以下泛型: 我得到以下例外情况: 我知道Avro不会支持泛型类型。是否有一种方法可以在运行时生成架构时从类中省略某些类字段?

  • 问题内容: 我正在用Java编写一个Kafka流应用程序,该应用程序将接受由连接器创建的输入主题,该连接器将模式注册表和avro用于键和值转换器。连接器产生以下架构: 实际上,有几个主题,键模式始终是“ int”,而值模式始终是某种记录(用户,产品等)。我的代码包含以下定义 最初,我尝试使用类似的内容来使用该主题, Consumed.with(Serdes.Integer(), userSerde

  • 如何在我的Apple类中生成BigDecimal?现在我只有一个字节缓冲符。。。。 使用Avro模式(avsc): 使用IDL: 使用maven生成方法mvn clean compile和以下maven代码段: 这两种方法都返回了这个丑陋的方法,显然几乎无法使用。。。 如何使此方法请求BigDecimal?这是使用Avro

  • 如何将此迭代器与泛型类型一起使用?以下是我在“main”函数中尝试的方法: 结果是:<代码>无法从静态上下文引用非静态类项 结果是:<代码>无法从静态上下文引用非静态类项 结果: 编辑: 我调用的是类而不是方法。这项工作: 迭代器it=deq。迭代器(); 我认为,由于iterator()中返回的实例的类型是ListIterator,因此我需要使用该类型声明“it”。

  • 我想在Kotlin中为具有不可变属性的类型使用类型安全生成器。 我想到了两种解决方案: 选项 1:创建生成器类: 选项2:创建自定义委托以防止再次设置该值: 选项1的缺点是我必须维护两个类,选项2的缺点是编译器将允许再次设置< code>DataClass中的值,并且检查将只在运行时进行。 有没有更好的方法来解决这个问题而没有提到的缺点?