2012-04-17 14 views
0

私はプロジェクトにApache Avroを使用していますが、それが何を呼び出すのか分かりません。のマップになります。私は、使用中のマップのいずれかの例を見つけることができていない、とスペック上の例では、かなり裸です:avroのマップとレコードの違いは何ですか?

が地図

マップは型の名前を使用し"map"と支援1属性:

  • values:マップの値のスキーマ。

マップキーは文字列とみなされます。例えば、長期に文字列からマップを使用して宣言され

{"type": "map", "values": "long"}

スキーマはJSONとしてのように見えるというデータに合うかもしれませんか?レコードがうまくいっていないことをマップでどのように使用していますか?

答えて

2

私の理解は、Javaがjava.util.Mapと比較して名前付きプロパティを持つPOJOをどのように扱うのかとはかなり似ています。つまり、マップ内のエントリの名前は任意で動的です。データ型はすべて同じ型です(ただし、型を示すにはjava.lang.Object)。

つまり、マップはエントリに関してより汎用性がありますが、(フィールドの直接インデックス作成と比較して、名前検索のために)POJOよりも処理が遅くなります。

Avro自体は、スキーマが必要なため、かなり強く型付けされています。これはおそらく、JSONなどのより動的なフォーマットよりも魅力的ではないマップを使用します。

関連する問題