2016-10-19 11 views
0

現在、Twitterデータストリームを格納するAvroスキーマを作成しています。 JSONで マイデータソース:カサンドラでApache Avroスキーマのリストまたはコレクション

{ 
'id': '123456789', 
'text': 'bla bla bla...', 
'entities': { 
    'hashtags': [{'text':'hashtag1'},{'text':'hashtag2'}] 
    } 
} 

、私は、ハッシュタグのデータを格納するコレクション(セットまたはリスト)を定義することができます。 しかし、私はApache Avroでどのようにこの構造を定義するのか分かりません。ここで

は私の最高の試みです:

{"namespace": "ln.twitter", 
"type": "record", 
"name": "main", 
"fields": [ 
    {"name": "id","type": "string"}, 
    {"name": "text","type": "string"}, 
    {"name": "hashtags","type": "string"} // is there any better format for this ? 
] 
} 

はあなたのアドバイスをしてください必要があります。

ありがとう、 Yusata。

答えて

1

entitiesフィールドには明示的なレコード(またはマップ)が必要です。それは便利です場合

{ 
    "type": "record", 
    "name": "Main", 
    "fields": [ 
    { 
     "name": "id", 
     "type": "string" 
    }, 
    { 
     "name": "text", 
     "type": "string" 
    }, 
    { 
     "name": "entities", 
     "type": { 
     "type": "record", 
     "name": "Entities", 
     "fields": [ 
      { 
      "name": "hashtags", 
      "type": { 
       "type": "array", 
       "items": { 
       "type": "record", 
       "name": "Hashtag", 
       "fields": [ 
        { 
        "name": "text", 
        "type": "string" 
        } 
       ] 
       } 
      } 
      } 
     ] 
     } 
    } 
    ] 
} 

、あなたが任意の有効なJSONレコードから(匿名)アブロスキーマを生成するためにthis toolを使用することができます。ここでは動作するはずのスキーマです。次に、タイプをrecordに追加するだけです。

あなたは、切り替え後のあなたの例でそれを試すことができ、その'"へ:

{ 
    "id": "123456789", 
    "text": "bla bla bla...", 
    "entities": {"hashtags": [{"text": "hashtag1"}, {"text": "hashtag2"}]} 
} 
関連する問題