2016-08-03 58 views
0

我有一個avro模式如下,我想要一個模式的示例/示例記錄。地圖類型的等效avro記錄數據

模式:

{ 
    "name" : "root", 
    "type" : "record", 
    "fields" : [ 
     { 
     "name" : "sub_rec", 
     "type" : { 
      "type" : "array", 
      "items" : { 
       "type" : "map", 
       "values" : "string" 
      } 
     } 
     } 
    ] 
} 

我試圖像下面,但它不工作

{ 
    "sub_rec" : {[ 
     "key1" : "val1", 
     "key2" : "val2" 
    ]} 
} 
+0

'子rec' VS'sub_rec'的記錄。此外,它是一個數組,而不是一個對象/地圖 –

+0

你的意思是記錄應該是這樣嗎? { 「sub_rec」:[{[ 「KEY1」: 「VAL1」, 「KEY2」: 「VAL2」 ]}]} 感謝 – ghosts

回答

0

不太熟悉的Avro,但我不知道這是不是因爲數組無效不能有鍵值對

[ 
    "key1" : "val1", 
    "key2" : "val2" 
] 

這是我對正確記錄格式的思考過程。

您從一條記錄開始。我不認爲這個名字在這裏適用,但如果是這樣的話,那可能需要是你正在序列化的類的名字。

{}

內的是,有一個名爲sub_rec字段,其​​類型是一個數組。

{ "sub_rec" : [] }

在該數組場,你必須是地圖類型與嚴格的字符串值項。

{ 
    "sub_rec" : [ 
     { "key1" : "value" }, 
     { "key2" : "value" } 
    ] 
} 

另一種解釋(倒退)

你有一個映射記錄,只有串

{ "key" : "string-value" } 

這些被存儲在一個數組

[ { "key1" : "string-value" }, { "key2" : "string-value" } ] 

值該數組已存儲在名爲"sub_rec"

(同上全記錄)

+0

的詳細解釋,但沒有奏效。 – ghosts

+0

你確定你可以有嵌套類型嗎?就像你有''鍵入「:{」type「:...}}? –

+0

是的,架構編譯成功 – ghosts