我是相当新的AVRO,所以请原谅,如果我错过了任何明显的东西。是否有一个AVRO验证器/命令行实用程序可以根据AVRO模式验证输入?或者可能指向json输入中的错误所在。
发布于 2012-04-18 23:02:07
据我所知没有。
这取决于Python avro library。
#!/usr/bin/env python
from avro.io import validate
from avro.schema import parse
from json import loads
from sys import argv
def main(argv):
valid = set()
invalid_avro = set()
invalid_json = set()
if len(argv) < 3:
print "Give me an avro schema file and a whitespace-separated list of json files to validate against it."
else:
schema = parse(open(argv[1]).read())
for arg in argv[2:]:
try:
json = loads(open(arg, 'r').read())
if validate(schema, json):
valid.add(arg)
else:
invalid_avro.add(arg)
except ValueError:
invalid_json.add(arg)
print ' Valid files:\n\t' + '\n\t'.join(valid)
print 'Invalid avro:\n\t' + '\n\t'.join(invalid_avro)
print 'Invalid json:\n\t' + '\n\t'.join(invalid_json)
if '__main__' == __name__:
main(argv)发布于 2012-04-24 13:35:50
我不确定你的问题是否有意义:因为Avro Schema在处理Avro数据时是强制的,所以它总是在默认情况下基本上是有效的。换句话说,解析Avro的行为必然会验证它。
不幸的是,由于Avro数据中只有很少的元数据,所有不兼容的更改本质上都是数据损坏;您很可能只会得到垃圾。这是因为没有字段is或分隔符:所有数据都是根据Schema规定必须遵循的内容进行解释的。这种冗余的缺乏使得数据非常紧凑,但也意味着即使是最小的数据损坏也可能使整个数据流变得无用。
发布于 2012-10-08 03:17:56
我为JavaScript做了一个Avro验证器,你可以在JSON上运行它。它还不是Avro发行版的一部分,但应该很快就会提交。你可以在https://issues.apache.org/jira/browse/AVRO-485上找到补丁。
https://stackoverflow.com/questions/10183056
复制相似问题