2016-04-14 4 views
1

Avroスキーマの新機能です。私はkafkaを使用して/コンシューマのJavaオブジェクトを公開しようとします。 私は、LocalDateTimeとbyte []のフィールドを含むjava beanクラスを持っています。 avroスキーマのプリミティブ型で両方を定義するにはどうすればよいですか? LocalDateTimeに使用できる最良のプリミティブ型は何ですか?avroスキーマでbyte []とLocalDateTimeを定義する方法は?

private LocalDateTime timestamp; 
private byte[] content; 

このように定義しました。しかし、取得

{ 
      "name": "content", "type": "bytes" 
     }, 

クラスのキャスト例外[1]

[1]によって引き起こさ:java.lang.ClassCastExceptionが:[Bは org.apacheで java.nio.ByteBufferのにキャストすることはできません org.apache.avro.generic.GenericDatumWriter.writeFieldで.avro.generic.GenericDatumWriter.writeBytes org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:77)で(GenericDatumWriter.java:219) (GenericDatumWriter.java:114) 、 org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:104) でorg.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:66) org.apache.avro.genericで.GenericDatumWriter.write(GenericDatumWriter.java:58)

+1

「バイト[]」のAvroの「バイト」プリミティブはどうですか? http://avro.apache.org/docs/current/spec.html#schema_primitive –

答えて

1

バイト[]の場合、migunoと同様にバイトプリミティブを使用できます。 LocalDateTimeオブジェクトの場合は、ミリ秒単位に変換することで、長いプリミティブとして格納できます。 Avroは、プリミティブ型の一部ではないものに直接逆シリアル化するために使用できる論理型もサポートしています。詳しくは、hereを参照してください。

関連する問題