#blog2navi()

ニコニコデータビューアー向けテーブルスキーマ

ニコニコデータセットが公開された。コメントデータが約24億件。動画情報が約800万件ある。動画情報はMySQLに入るが、コメントデータはさすがに入りきらない。いきおいコメントデータは、hadoop等を用いた分散環境での解析が主になる。

しかし、いまだにhadoopを使うような分散環境を構築するのは素人には手が余る。何かを分析しようとしても、分析するための事前準備に多くの手間を取られる。

私は思いついた。それなら、環境構築の部分はこちらでやってWebUIを通してデータ解析に注力してもらうシステムを作れば良いのでは・・・・。

hadoopの上にHiveと言うSQL-Likeな問い合わせができるシステムがある。それを使うと比較的簡単(SQLを書くだけで)にデータの取得ができる。

つまり、Hive->Hadoop->ニコニコ動画のコメント情報を解析->結果出力の部分を詰め込んだ環境を作れば良いのでは。

と思って作ったのがこれ.ニコニコデータセットを手軽に解析できるwebアプリだ。

WS000074.JPG

手始めに、上に書いている

SELECT count(*) FROM nicodata.comment_data_sampling100 WHERE comment_string LIKE "%wwwwww%"

を下のテキストエリアに貼り付けて、その下のexecuteボタンを押して見てほしい。 しばらくする(5分くらい待つ)と、Query Status:executedと言う表示が出てくるはずだ。

WS000078.JPG

これが出ると言うことはすなわち、解析が終わったと言うことだ。ちなみに上のSQL文は、wwwwwを含むコメントは何個あるか数えるSQLだ。

これを使うことで、色々複雑な前準備無しに手軽にニコニコ動画の解析ができる。 バックエンドは、AmazonEC2を使っているためお金がかかる。当面は、土日だけ立ちあげて、平日は落としておこうと思っている。 SELECTしか使えないようにしているので、初心者がデータを壊すことはありません。安心して使ってください。

何故作ったかの説明

このスライドに何故作ったの説明がある。 http://www.slideshare.net/shibacow/n-24673260

スライド中あった、日本語が通らない問題は現在解決されている。

仕様

  • SELECTは使えます。
  • INSERTは使えません。
  • ALTERは使えません。
  • そのため初心者がデータを壊すことはありませんので安心して使ってください。

バックエンド

  • AmazonEC2-ElasticMapReduce Master-m1.mediam,Slave-m1.large x 4
  • Shib(Simple Hive Interface) by tagomoris

テーブル情報

スキーマ - nicodata

テーブルサンプリング

全数のデータが入ったテーブルの他に、サンプリングデータを用意した。

10分の位置のレコードを入れたテーブル(sm数値の部分で、10で割り切れるもののみ格納)と100分の1レコードを入れたテーブル(sm数値の部分の100で割り切れるもののみ格納)を用意した。なるだけサンプリングデータで解析してほしい。

全数で検査をする前に、100分の一、10分の一で正しく動くか試してほしい。全数検査はよほどのことが無い限りやら無い方向で。

テーブル(動画情報)

  • nicodata.videoinfo_sampling100 (100分の一サンプリング)(八万)
  • nicodata.videoinfo_sampling10 (10分の一サンプリング)(八十万)
  • nicodata.videoinfo (全数)(八百万)

テーブルスキーマ

カラム名説明
smidstring動画ID
thread_idstringスレッドID(コメントID)
titlestring動画タイトル
descriptionstring動画説明文
thumbnail_urlstringサムネイル画像へのURL
upload_timestring投稿日(ISO 8601 形式) 2007-03-06T00:33:00+09:00
lengthint動画再生長 (秒数)
movie_typestring動画フォーマット
size_highint高画質動画のファイルサイズ (byte)
size_lowint低画質動画のファイルサイズ (byte)
view_counterint動画の再生数
comment_counterintコメント数
mylist_counterintマイリスト登録数
last_res_bodystring最近のコメントのサマリ

テーブル(タグ情報)

  • nicodata.tags_sampling100(100分の1サンプリング)(40万)
  • nicodata.tags_sampling10(10分の1サンプリング)(400万)
  • nicodata.tags (4千万)

テーブルスキーマ

カラム名説明
smidstring動画ID(smid)
lockedtinyintロックされているか?(1 or 0)
categorytinyintカテゴリータグか(1 or 0)
tagstringタグ名(初音ミク)とか

テーブル(コメント情報)

  • nicodata.comment_data_sampling100(100分の1サンプリング)(二千万)
  • nicodata.comment_data_sampling10(10分の1サンプリング)(二億四千万)
  • nicodata.comment_data (24億件)

テーブルスキーマ

カラム名説明
smidstring動画ID(smid)
dateintコメント投稿日時 (UNIX秒)
vposintコメント書き込み再生位置 (1/100秒)
nointコメント番号
commandstringコマンド(184 sita等)
comment_stringstringコメント本文
  • 注意 コメントテーブルのdateを参照する場合には、`date`とした方が良いようです。hiveが自分のコマンドのdateと区別ができず、エラーになります。
    SELECT count(`date`) FROM nicodata.comment_data_sampling100 WHERE `date` > 1341994948
    のようにした方が良いです。
Category: [ニコニコ動画 hadoop] - 03:01:45

&blog2trackback();

#blog2navi()


添付ファイル: fileWS000078.JPG 9356件 [詳細] fileWS000074.JPG 9361件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-02-01 (日) 14:38:24 (3378d)