3

プロジェクトにApache Avroを使用していますが、 mapsと呼ばれるものを理解できないようです。使用中のマップの例を見つけることができませんでした。仕様の例はかなりむき出しです:

マップ

マップはタイプ名を使用し、"map"1 つの属性をサポートします。

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

マップ キーは文字列と見なされます。

たとえば、string から long へのマップは次のように宣言されます。

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

そのスキーマに適合するデータは、JSON としてどのように見えるでしょうか? レコードが優れていないのに、マップにはどのような用途がありますか?

4

1 に答える 1

3

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

つまり、マップはエントリに関してより用途が広いですが、POJO よりも多くのストレージ スペースを使用し、処理が遅くなります (フィールドの直接インデックス作成と比較して、名前によるルックアップのため)。

Avro 自体は、スキーマを必要とするため、かなり強く型付けされています。おそらく、JSON のようなより動的な形式よりもマップの使用が魅力的ではありません。

于 2012-04-24T05:30:55.870 に答える