我想用这个avro shcema
{
"namespace": "nothing",
"name": "myAvroSchema",
"type": "record",
"fields": [
{
"name": "checkInCustomerReference",
"type": "string"
},
{
"name": "customerContacts",
"type": "record",
"fields": [
{
"name": "customerEmail",
"type": "array",
"items": {
"type": "record",
"name": "customerEmail_element",
"fields": [
{
"name": "emailAddress",
"type": "string"
},
{
"name": "typeOfEmail",
"type": "string"
}
]
}
},
{
"name": "customerPhone",
"type": "array",
"items": {
"type": "record",
"name": "customerPhone_element",
"fields": [
{
"name": "fullContactNumber",
"type": "string"
},
{
"name": "ISDCode",
"type": "string"
}
]
}
},
{
"name": "DonotAskIndicator",
"type": "record",
"fields": [
{
"name": "donotAskDetails",
"type": "string"
}
]
}
]
},
{
"name": "somethingElseToCheck",
"type": "string"
}
]
}
要使用avro工具生成和编辑avro文件:
avro-tools fromjson --schema-file myAvroSchema.avsc myJson.json > myAvroData.avro
但我收到了以下错误信息:
线程“main”组织中出现异常。阿帕奇。阿夫罗。SchemaParseException:“记录”不是定义的名称。“customerContacts”字段的类型必须是已定义的名称或{“类型”:表示
有人能告诉我为什么记录没有被定义为一个名字吗?
你必须在使用记录之前定义它。您可以在这里找到awser(示例):创建scheme时的问题。avsc Avro
“customerContacts”字段的类型必须是已定义的名称或{“类型”:表示
看起来不像您正确定义嵌套记录。我复制了您的模式并提出了这个,试试看:
{
"type":"record",
"name":"myAvroSchema",
"namespace":"nothing",
"fields":[
{
"name":"checkInCustomerReference",
"type":"string"
},
{
"name":"customerContacts",
"type":{
"type":"record",
"name":"customerContacts",
"namespace":"nothing",
"fields":[
{
"name":"customerEmail",
"type":{
"type":"array",
"items":{
"type":"record",
"name":"customerEmail",
"namespace":"nothing",
"fields":[
{
"name":"emailAddress",
"type":"string"
},
{
"name":"typeOfEmail",
"type":"string"
}
]
}
}
},
{
"name":"customerPhone",
"type":{
"type":"array",
"items":{
"type":"record",
"name":"customerPhone",
"namespace":"nothing",
"fields":[
{
"name":"fullContactNumber",
"type":"string"
},
{
"name":"ISDCode",
"type":"string"
}
]
}
}
},
{
"name":"DonotAskIndicator",
"type":{
"type":"record",
"name":"donotAskIndicator",
"namespace":"nothing",
"fields":[
{
"name":"donotAskDetails",
"type":"string"
}
]
}
}
]
}
},
{
"name":"somethingElseToCheck",
"type":"string"
}
]
}
我正在尝试使用这个avro模式 要使用avro工具生成和编辑avro文件: 但我收到了以下错误信息: 线程"main"org.apache.avro.SchemaParseException中的异常:"Security分类"不是已定义的名称。"security分类"字段的类型必须是已定义的名称或{"type":...}表达式。 谁能告诉我,为什么SecurityClassification没有被定
我有一个问题,我的记录json可以为null。如何处理avro模式中的空记录?给出的文档是针对我想要为null记录获取的null属性的。
我得到了一个定义字段的警告: 我试图将其更改为: 现在它根本不起作用,因为模式无效。 错误: 知道怎么解决吗?
使用NiFi 1.7.1(使用Java Avro 1.8.1)和AvroSchemaRegistry,我试图定义一个模式,其中包含和位于顶层。根据Avro文档[1],我假设我可以像普通的一样定义全名,但我在:app中遇到了错误。确实,全名的名称部分不允许点,但根据文档:“如果指定的名称包含点,则假定它是全名…” 然后我尝试使用命名空间字段。使用以下模式: 我遇到了以下错误: 最终,我希望能够定义这
我正在尝试为下面的json创建avro模式 错误对象是可选的,它可能是“错误”:{}下面是没有默认值的avro模式 如何在json中添加错误字段的默认值{}。
我使用的是NiFi(v1.2)处理器ConvertJSONToAvro。我无法解析一个“记录”类型中仅包含2个元素中的1个元素的记录。数据中也允许完全缺少该元素。我的Avro模式不正确吗? 架构片段: 如果“personname”同时包含“first”和“last”,它就可以工作,但是如果它只包含其中一个元素,它就会失败,错误是:无法转换字段personname:无法解析联合:{“last”:“S