首页
学习
活动
专区
圈层
工具
发布

AVRO验证
EN

Stack Overflow用户
提问于 2012-04-17 07:24:13
回答 3查看 14K关注 0票数 8

我是相当新的AVRO,所以请原谅,如果我错过了任何明显的东西。是否有一个AVRO验证器/命令行实用程序可以根据AVRO模式验证输入?或者可能指向json输入中的错误所在。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-18 23:02:07

据我所知没有。

这取决于Python avro library

代码语言:javascript
复制
#!/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)
票数 7
EN

Stack Overflow用户

发布于 2012-04-24 13:35:50

我不确定你的问题是否有意义:因为Avro Schema在处理Avro数据时是强制的,所以它总是在默认情况下基本上是有效的。换句话说,解析Avro的行为必然会验证它。

不幸的是,由于Avro数据中只有很少的元数据,所有不兼容的更改本质上都是数据损坏;您很可能只会得到垃圾。这是因为没有字段is或分隔符:所有数据都是根据Schema规定必须遵循的内容进行解释的。这种冗余的缺乏使得数据非常紧凑,但也意味着即使是最小的数据损坏也可能使整个数据流变得无用。

票数 1
EN

Stack Overflow用户

发布于 2012-10-08 03:17:56

我为JavaScript做了一个Avro验证器,你可以在JSON上运行它。它还不是Avro发行版的一部分,但应该很快就会提交。你可以在https://issues.apache.org/jira/browse/AVRO-485上找到补丁。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10183056

复制
相关文章

相似问题

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