Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有不同字段的Json文件中的Json到Avro转换_Json_Avro_Parquet - Fatal编程技术网

具有不同字段的Json文件中的Json到Avro转换

具有不同字段的Json文件中的Json到Avro转换,json,avro,parquet,Json,Avro,Parquet,在将JSON文件转换为avro格式之前,我遇到了一个问题。但是在这种情况下,JSON数据具有不同的字段值,例如: {"a":"x1", "b":"x2": "c":"x3"} {"b":"x4", "d":"x5"} 我有一个工作代码来转换文件,其中每个条目中的字段保持不变。但是作为一种模式定义语言,avro无法支持上述数据(具有不同的字段) 我有一个基本问题,在这种情况下,是否可以使用模式并将其转换为avro格式?或者有没有其他工具可以用来完成这项任务 一种方法是创建一个模式,该模

在将
JSON
文件转换为
avro格式
之前,我遇到了一个问题。但是在这种情况下,
JSON
数据具有不同的字段值,例如:

  {"a":"x1", "b":"x2": "c":"x3"}

  {"b":"x4", "d":"x5"}
我有一个工作代码来转换文件,其中每个条目中的字段保持不变。但是作为一种模式定义语言,
avro
无法支持上述数据(具有不同的字段)


我有一个基本问题,在这种情况下,是否可以使用模式并将其转换为avro格式?或者有没有其他工具可以用来完成这项任务

一种方法是创建一个模式,该模式是所有可能字段的超集,并将没有的字段保留为null(我认为这就是您在问题中所暗示的方法。null是由Avro中的联合定义的,因此看起来像这样

{
“类型”:“记录”,
“名称空间”:“com.mycompany”,
“名称”:“我的记录”,
“字段”:[
{
“姓名”:“a”,
“类型”:[“字符串”,“空”]
},
{
“名称”:“b”,
“类型”:[“字符串”,“空”]
},
{
“姓名”:“c”,
“类型”:[“字符串”,“空”]
}
]
}
如果不可能预先知道所有字段,另一种方法是使用类似

{
“类型”:“记录”,
“名称空间”:“com.mycompany”,
“名称”:“我的记录”,
“字段”:[
{
“名称”:“TheFields”,
“类型”:“地图”,
“值”:“字符串”
}
]
}
但这只有在所有字段都是相同类型的情况下才有效,并且您必须编写自己的代码来解析JSON并将其放入映射中

这些是我能想到的唯一选项。在Avro中没有XML模式的等价物。严格的模式一致性是设计固有的