AVROにはかなり新しくなっています。 AVROスキーマに対する入力を検証するAVROバリデータ/コマンドラインユーティリティはありますか?または、おそらく、エラーがjson入力のどこにあるのかを指します。AVROバリデーション
5
A
答えて
4
私は認識していません。私はjsonファイルがスキーマにマッチするかどうかを教えてくれる小さなPythonスクリプトを書いたが、それはを教えてくれない。エラーがあればそれがある。
これは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)
1
私はあなたの質問は理にかなっていることを確認していない:アブロスキーマは必須ですので、アブロデータを処理するとき、それは常に基本的にはデフォルトで有効化されます。別の言い方をすれば、Avroを解析する行為は必然的にそれを検証するでしょう。
残念ながら、Avroデータにはメタデータがほとんどないため、すべての互換性のない変更は基本的にデータの破損になります。あなたはたまにゴミを手に入れるかもしれません。フィールドIDまたは区切り記号がないため、すべてのデータはスキーマに従わなければならないことに基づいて解釈されます。この冗長性の欠如は、データを非常にコンパクトにしますが、最小のデータ破損によってもデータストリーム全体が役に立たなくなる可能性があります。
1
JSONで実行できるJavaScript用のAvroバリデーターを作成しました。それはまだAvroリリースの一部ではありませんが、すぐにコミットする必要があります。パッチはhttps://issues.apache.org/jira/browse/AVRO-485にあります。
関連する問題
- 1. spark-avroのインストール
- 2. GenericのAvroシリアライゼーション
- 3. spark-avro databricks package
- 4. Spark AVRO with BigQuery
- 5. JsonスキーマのバリデーションとJsonバリデーションのセグレゲート
- 6. QDateEditバリデーション
- 7. has_and_belongs_to_manyバリデーション
- 8. Kaa - Avro論理タイプ
- 9. java.lang.NoClassDefFoundError:com/databricks/spark/avro/package $
- 10. Kafka Avroコンシューマ(デコーダー付)
- 11. AVROのデータ検証
- 12. AvroとProtobufのパフォーマンスメトリック
- 13. Avro Writer in Python 3.5
- 14. Apache Avro for c#Microsoft.Avro.Core
- 15. avro 1.8.1 BigInteger変換
- 16. Flink - scalaのAvroサポート
- 17. ストリームアナリティクスと圧縮avro
- 18. confluent-kafka python avro messages
- 19. avroユニオンのjsonエンコード
- 20. spring-cloud-stream kafka avro
- 21. MVCフォームのバリデーション
- 22. PHPバリデーションのトラブル
- 23. JavaScriptのJavascriptバリデーション
- 24. ノードフォームのバリデーション
- 25. フォームのバリデーションjavascript
- 26. スプリングコンフィギュレーションファイルのバリデーション
- 27. MVC.net JQueryのバリデーション
- 28. Javascriptのバリデーション
- 29. MaterialBetterSpinnerのバリデーション
- 30. PHPファイルタイプのバリデーション
スクリプトをお寄せいただきありがとうございます。実際の問題を指摘するものは何もないことは間違いありません。 – airboss
@Anupスキーマと入力をチャンクに分解し、それらのチャンクを検証する必要があります。 RecordSchemaを分割するのは簡単ですが、JSON入力が無効な場合は、どのように分割するのかを知ることは難しいです。ご提案がありましたらお知らせください。 – kojiro