首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVRO -支持Union记录类型的复杂记录

AVRO -支持Union记录类型的复杂记录
EN

Stack Overflow用户
提问于 2018-06-26 04:28:33
回答 1查看 7.9K关注 0票数 3

我正在尝试使用Union数据类型支持的成员记录类型来构建AVRO的复杂记录。

代码语言:javascript
复制
{
    "namespace": "proj.avro",
    "protocol": "app_messages",
    "doc" : "application messages",
    
    "types": [
        {
            "name": "record_request",
            "type" : "record", 
            "fields": 
            [
                {
                    "name" : "request_id", 
                    "type" : "int"
                },
                {
                    "name" : "message_type",
                    "type" : int,
                },
                {
                    "name" : "users",
                    "type" : "string"
                }
            ]
        },
        {
            "name" : "request_response",
            "type" : "record",
            "fields" :
            [
                {
                    "name" : "request_id",
                    "type" : "int"
                },
                {
                    "name" : "response_code",
                    "type" : "string"
                },
                {
                    "name" : "response_count",
                    "type" : "int"
                },
                {
                    "name" : "reason_code",
                    "type" : "string"
                }
            ]
        }
    ]
    
    "messages" :
    {
        "published_msgs" :
        {
            "doc" : "My Messages",
            "fields" :
            [
                {
                    "name" : "message_type",
                    "type" : "int"
                },
                {
                    "name" : "message_body",
                    "type" : 
                    [
                        "record_request", "request_response"
                    ]
                }
            ]
            
        }
    }
}

我在尝试读取这种模式时遇到错误。

我想知道-是否可以声明这样的AVRO模式-其中一个字段是复杂的用户定义消息结构的联合。

如果可能的话,你能让我知道我做错了什么吗,或者是一个这样的结构与联合类型字段的类型定义的例子?

我想使用AVRO的动态模式用法-所以指定这个模式文件运行时,并将传入的缓冲区解析为"request"/"response“。

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2018-06-26 20:42:45

定义复杂类型的联合是可能的,你的模式的问题是它不是在字段级别定义的。您的架构必须如下所示,才能实现复杂类型的联合

代码语言:javascript
复制
{
    "namespace": "proj.avro",
    "protocol": "app_messages",
    "doc" : "application messages",
    "name": "myRecord",
    "type" : "record",
    "fields": [
    {
    "name": "requestResponse",
    "type": [
        {
            "name": "record_request",
            "type" : "record", 
            "fields": 
            [
                {
                    "name" : "request_id", 
                    "type" : "int"
                },
                {
                    "name" : "message_type",
                    "type" : "int"
                },
                {
                    "name" : "users",
                    "type" : "string"
                }
            ]
        },
        {
            "name" : "request_response",
            "type" : "record",
            "fields" :
            [
                {
                    "name" : "request_id",
                    "type" : "int"
                },
                {
                    "name" : "response_code",
                    "type" : "string"
                },
                {
                    "name" : "response_count",
                    "type" : "int"
                },
                {
                    "name" : "reason_code",
                    "type" : "string"
                }
            ]
        }
    ]
    }
    ]
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51031364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档