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

无法在Avro架构1.7.7中指定用户定义的类型

百里泓
2023-03-14

我正在试图找出为什么我不能在<code>的“消息”:

{
    "namespace": "com.ci.generated",
    "name": "MessageEnvelope",
    "type": "record",
    "fields": [{
        "name": "message",
        "type": {
            "name": "Message",
            "type": "record",
            "fields": [{
                    "name": "media_type",
                    "type": {
                        "type": "enum",
                        "name": "MediaTypes",
                        "symbols": ["Text", "Image"]
                    }
                },
                {
                    "name": "text_record",
                    "type": {
                        "type": "record",
                        "name": "TextRecords",
                        "fields": [{
                            "name": "name",
                            "type": "string"
                        }]
                    }
                },
                {
                    "name": "image_record",
                    "type": {
                        "name": "ImageRecords",
                        "type": "record",
                        "fields": [{
                                "name": "url",
                                "type": "string"
                            },
                            {
                                "name": "sentiment",
                                "type": {
                                    "name": "ImageSentiments",
                                    "type": "enum",
                                    "symbols": ["positive", "negetive", "neutral"]
                                }
                            }
                        ]
                    }
                },
                {
                    "name": "named_media",
                    "type": {
                        "name": "NamedMedia",
                        "type": "record",
                        "fields": [{
                                "name": "type",
                                "type": ["media_type"]
                            },
                            {
                                "name": "index",
                                "type": "int"
                            },
                            {
                                "name": "name",
                                "type": ["null", "string"]
                            },
                            {
                                "name": "data",
                                "type": [
                                    "null",
                                    "text_record",
                                    "image_record"
                                ]
                            }
                        ]
                    }
                }
            ]
        }
    }]
}

当我试图解析模式时,我得到了以下错误:

线程“main” org.apache.avro.SchemaParseException中的异常:未定义的名称:“media_type”at org.apache.avro.Schema.parse(Schema.java:1162) at org.apache.avro.Schema.parse(Schema.java:1272) at org.apache.avro.Schema.parse(Schema.java:1203)

我解析为:InputStream in=ClasName.class.getResourcesAsStream (""); Schema sc=new Parser(). parse(in)

当我只使用json数据类型时,它工作得非常好。如何为设计的数据类型定义值?

共有1个答案

越飞语
2023-03-14

通过将数据更改为:

{"name": "data", "type": [
        "null",
        "TextRecord",
        "ImageRecords"
    ] 
}
 类似资料:
  • 我得到了一个定义字段的警告: 我试图将其更改为: 现在它根本不起作用,因为模式无效。 错误: 知道怎么解决吗?

  • 使用NiFi 1.7.1(使用Java Avro 1.8.1)和AvroSchemaRegistry,我试图定义一个模式,其中包含和位于顶层。根据Avro文档[1],我假设我可以像普通的一样定义全名,但我在:app中遇到了错误。确实,全名的名称部分不允许点,但根据文档:“如果指定的名称包含点,则假定它是全名…” 然后我尝试使用命名空间字段。使用以下模式: 我遇到了以下错误: 最终,我希望能够定义这

  • 我正在使用层叠将文本分隔转换为拼花地板 下面是拼花图案: 以下是avro模式: 如何跟踪parquet中avro文件中的“doc”部分?

  • 我对Java有很好的理解,但我正在努力学习c来制作游戏,因为我认为c是一种更好的语言。但是我对c有一些问题。 是一个带有字符串构造函数的类,只是在这个类中声明它会导致错误。如果我删除的构造函数,我不会得到错误。 错误:render.cpp:3:16:错误:没有匹配的函数调用着色器::着色器()

  • 问题内容: 目前,我正在做一个项目,可能需要使用kNN算法查找给定点的前k个最近的邻居,例如P. im使用python,sklearn包来完成这项工作,但我们的预定义指标不是默认指标之一指标。因此我必须使用sklearn文档中的用户定义指标,可以在此处和此处找到。 看来sklearn kNN的最新版本支持用户定义的指标,但是我找不到如何使用它: 说我已经定义了一个名为mydist = max(xy

  • 在我的中,我有一个名为testDB的数据库,用我的命令行我试图导出数据库,但是每次我试图运行这个命令时,我都会得到错误1449: 错误是:“使用锁表时,指定为定义器('myuser'@'')的用户不存在” 我分析了sql文件,发现该用户名只在文件底部出现一次: 如果不导出数据库,也不创建新用户,因为我无法创建新用户,我该如何解决此问题? 是否可以为我的数据库使用特定的SQL命令替换此值? 我的服务