問題タブ [avro4s]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
apache-kafka - オプションのレコードを含む AVRO スキーマ
こんにちは、次の例の AVRO スキーマを作成する必要があります。
Accident と Owner はオプション オブジェクトであり、作成されたスキーマも次のサブセット メッセージを検証する必要があります。
私は AVRO の仕様を読み、多くのオプションの属性と配列の例を見ましたが、それらのどれも記録のために機能しませんでした。レコードをオプションとして定義するにはどうすればよいですか? ありがとう。
オプション属性のない次のスキーマは機能しています。
提案されたように所有者オブジェクトを変更すると、avro-tool がエラーを返します。
] }
テスト:
scala - 暗黙的なオブジェクトはインラインで機能しますが、インポートされたときは機能しません
私はavro4s
avro シリアライゼーションとデシリアライゼーションを支援するために使用しています。
sを含むケース クラスがあり、レコードを Kafka に公開する前に、Timestamp
これらの s を適切にフォーマットされた文字列に変換する必要があります。Timestamp
デフォルトのエンコーダーは私Timestamp
の s をLong
s に変換しています。デコーダーとエンコーダーを作成する必要があることを読みました ( avro4s
readme から)。
これが私のケースクラスです:
次のエンコーダーを作成しました。
Test.scala
implicit object
上記のようにインラインで宣言すると、GenericRecord
探している が作成されます。implicit object
オブジェクトにラップされたファイルに抽象化しimport Implicits._
、カスタムエンコーダーを使用しようとしました。
Implicits.scala
Test.scala
エンコーダーを使用できません (ブレークポイントにヒットしません)。私は無数のことを試してみて、なぜそれが役に立たないのかを調べました.
暗黙的なオブジェクトを正しくインポートするにはどうすればよいですか?
全体のエンコーダーを作成せずに、 myをcase class
sにエンコードする簡単なソリューションはありますか?Timestamp
String
case class