2

次の Twitter データがあり、同じスキーマを設計したいと考えています。実行する必要があるクエリは次のとおりです。時間間隔のツイート量、対応するユーザー情報を含むツイート、対応するトピック情報を含むツイートなど...以下のデータに基づいて、誰でもスキーマの設計が正しい場所を教えてください..(行キーをid +タイムスタンプとして、列ファミリーをユーザーとして、その他をプライマリ列にグループ化します。提案はありますか?

{
   "created_at":"Tue Feb 19 11:16:34 +0000 2013",
   "id":303825398179979265,
   "id_str":"303825398179979265",
   "text":"Unleashing Innovation Conference Kicks Off - Wall Street Journal (India)              http:\/\/t.co\/3bkXJBz1",
   "source":"\u003ca href=\"http:\/\/dlvr.it\" rel=\"nofollow\"\u003edlvr.it\u003c\/a\u003e",
   "truncated":false,
   "in_reply_to_status_id":null,
   "in_reply_to_status_id_str":null,
   "in_reply_to_user_id":null,
   "in_reply_to_user_id_str":null,
   "in_reply_to_screen_name":null,
   "user":{
      "id":948385189,
      "id_str":"948385189",
      "name":"Innovation Plaza",
      "screen_name":"InnovationPlaza",
      "location":"",
      "url":"http:\/\/tinyurl.com\/ee4jiralp",
      "description":"All the latest breaking news about Innovation",
      "protected":false,
      "followers_count":136,
      "friends_count":1489,
      "listed_count":1,
      "created_at":"Wed Nov 14 19:49:18 +0000 2012",
      "favourites_count":0,
      "utc_offset":28800,
      "time_zone":"Beijing",
      "geo_enabled":false,
      "verified":false,
      "statuses_count":149,
      "lang":"en",
      "contributors_enabled":false,
      "is_translator":false,
      "profile_background_color":"131516",
      "profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/781710342\/17a75bf22d9fdad38eebc1c0cd441527.jpeg",
      "profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/781710342\/17a75bf22d9fdad38eebc1c0cd441527.jpeg",
      "profile_background_tile":true,
      "profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/3205718892\/8126617ac6b7a0e80fe219327c573852_normal.jpeg",
      "profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/3205718892\/8126617ac6b7a0e80fe219327c573852_normal.jpeg",
      "profile_link_color":"009999",
      "profile_sidebar_border_color":"FFFFFF",
      "profile_sidebar_fill_color":"EFEFEF",
      "profile_text_color":"333333",
      "profile_use_background_image":true,
      "default_profile":false,
      "default_profile_image":false,
      "following":null,
      "follow_request_sent":null,
      "notifications":null
   },
   "geo":null,
   "coordinates":null,
   "place":null,
   "contributors":null,
   "retweet_count":0,
   "entities":{
      "hashtags":[

      ],
      "urls":[
         {
            "url":"http:\/\/t.co\/3bkXJBz1",
            "expanded_url":"http:\/\/dlvr.it\/2yyG5C",
            "display_url":"dlvr.it\/2yyG5C",
            "indices":[
               73,
               93
            ]
         }
      ],
      "user_mentions":[

      ]
   },
   "favorited":false,
   "retweeted":false,
   "possibly_sensitive":false
}
4

1 に答える 1

0

ID が一意であることを 100% 確信している場合は、これを行キーとして大量のデータを格納できます。

303825398179979265 -> データ_CF

列ファミリー data_CF は、次の行で定義されます。

"created_at":"2013 年 2 月 19 日火曜日 11:16:34 +0000"
"id_str":"303825398179979265"
...
"user_id":948385189 { 辞書を非正規化していることに注意してください }
"user_name":"イノベーションプラザ"

リストの場合は少しトリッキーになります。解決策は、カテゴリの前に独自のものを追加することです。

"entities_hashtags_":"\x00" { ここで \x00 はダミーの値です }

URL の順序が重要でない場合は、UUID を前に付けることができます。一意であることを保証します。

このアプローチの利点は、このデータのフィールドを更新する必要がある場合、HBase が行の原子性を保証するため、原子的に行われることです。

2 番目の質問については、瞬時に集計された情報が必要な場合は、事前に計算して別のテーブルに保存する必要があります。このデータを M/R で生成したい場合、時間ベースの場合はタイムスタンプ + 行 ID を入力できます。トピック別は、トピック + 行 ID のようなものになります。これにより、関心のある時間範囲またはトピックのみを含む開始停止行を含むプレフィックス スキャンを作成できます。

楽しむ !

于 2013-03-14T19:59:25.413 に答える