Apacheのavro-tools
パッケージを使用して、私はJavaクラスから.avsc
ファイルを生成しました。私はReflectData
を私のメインクラスに指摘し、それを使ってスキーマを出力しました。問題は数多くありますが、スキーマとが同じクラスによって生成されたにもかかわらず、基本的に私の問題はAvroファイルを作成できません。Avroエラー:マップフィールドの「Unknown Union Branch」
たJavaのコードは次のとおりです。 Schema x = ReflectData.AllowNull.get().getSchema(MessageEnvelope.class);
だから私は、ファイルに上記の出力を貼り付けると、エラーが発生しているmsgEnvelope.avsc
スキーマファイルの行は、それを呼び出す:
{
"type": "record",
"name": "MessageEnvelope",
"namespace": "data.decoder",
"fields": [
{
"name": "headers",
"type": [
"null",
{
"type": "map",
"values": "string"
}
],
"default": null
},
....
}
私のJSONデータスキーマのこの部分に対応する部分がある:
{"headers": {"idno":"123", "maker":"xyz"}}
avro-tools
を実行すると、org.apache.avro.AvroTypeException: Unknown union branch idno
が生成されます。headers
に可変数のキーと値のペアが含まれるようにすることが目標です。
は、そのエラーを生成するために、私はあなたが提供することができます任意の助けてくれてありがとうを java -jar avro-tools.jar fromjson --schema-file msgEnvelope.avsc tgtJson.json
を走りました!
さらに、スキーマを使用すると、Avroの「ランダムデータジェネレータ」を使用してもエラーが発生します。スキーマが問題ですか? 'java -jar avro-tools.jar random --schema-file msgEnvelope.avsc --count 10。/ randomFromAVSC' –