Avroファイルを読み取ると、AvroTypeExceptionが発生します:必須フィールドエラーがありません(スキーマで新しいフィールドがnullと宣言されている場合でも)

キランM

Avroファイルを逆シリアル化/読み取りしようとしていますが、avroデータファイルに新しいフィールドがありません。新しいフィールドはスキーマでnullとして宣言されていますが、オプションであることが期待されています。しかし、それでも必須としてエラーが発生します。

スレッド "main" org.apache.avro.AvroTypeExceptionの例外:com.kiran.avro.Userが見つかりました。com.kiran.avro.Userが必要ですが、必須フィールドの場所がありません

AVROスキーマ宣言:

{"name": "loc", "type": ["string", "null"]}

コードを使用してファイルを読み取る:

DatumReader<User> userDatumReader = new SpecificDatumReader<User>(User.class);
DataFileReader<User> dataFileReader = new DataFileReader<User>(file, userDatumReader);

オプションのフィールドを宣言する他の方法はありますか?

ヒント/提案をありがとう!!

放射線技師

「ファイル」の内容は何ですか?

私は間違っているかもしれませんが、スキーマでフィールドをとして定義する場合は{"name": "loc", "type": ["string", "null"]}、の場合でもlocフィールドを定義する必要がありますnullそれは"loc": nullファイルのようなものでなければなりません

"default"このフィールド宣言に追加してみてください

{"name" : "loc",
"type" :  ["null","string"] ,
"default" : null}

次に、ファイル内のこのフィールドを省略できるはずです。

また、この質問を見ることができますAvro:deserialize json-いくつかの追加情報と例については、オプションのフィールド持つスキーマ

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ