Treasure Dataはビッグデータ解析のためのクラウドツールです。これによってビッグデータの収集・保存・解析を一手に担ってくれるのでアクセスログの解析なんかが簡単にできます。何十万何百万のレコードが書き込まれたテーブルへのクエリもそこそこ速く返ってきます。素晴らしい。
もし知らなくて興味があるって方は公式サイトからどうぞ。
今回はTreasureDataでのテーブルの作り方やサーバーからMySQLのデータをTreasureDataにアップロードする方法なんかを紹介します。TreasureDataには既に登録済みであることを前提に話を進めます。
まずTreasureDataコマンドを使うために。
(僕はRailsで開発を行っているのでそしか知らないのですが)tdというgemを入れる必要があります。 Gemfileに記述するか
gem install tdコマンドを打ち込みます。
treasure-data/td のgithubはこちらから
インストール後はtdコマンドでどんなコマンドが使えるか確認ができます。
一番最初は td account でメールアドレスとパスワードを打ちログインします。これで自分が登録しているTreasureDataにDBを作成したりテーブルを作ったりできます。
データベースの作成
td db:create my_db
テーブルの作成
td table:create my_db my_tbl
これでDBと空のテーブルがTreasureData内に作成出来ました。最後に、テーブルをTreasureDataにインポートします。
MySQLからのインポート
td --apikey my_apikey import:auto --auto-create my_db.my_table --format mysql --db-url jdbc:mysql://my_sql_host//my_sql_db --db-user my_user --db-password my_pass --time-column time my_tableそんなに難しくないです。一応気をつけなければいけないのはmy_db,my_tableはTreasureData内に作成したデータベース・テーブルでありmy_sql_host,my_sql_db,my_user,my_passはローカルにあるMySQLのホストやデータベース等になります。
APIKeyに関しては僕は最初抜きでやったら権限がないと怒られてしまったため付けました。そのユーザーの権限によっては必要がないかもしれません。
また --time-columnの欄は時刻を記録するカラムの設定です。TreasureDataは基本的に時刻のカラムを持たなければいけません。インポート元のテーブルに時刻を記録するカラムがあればそのカラム名を、なければ--time-value 0 とかでいいのかと思います。
これでMySQLのテーブルをTreasureDataへインポートできます。
MySQL以外にもTreasureDataにはCSVやjson,PostgreSQLなど様々な形式のデータをインポートできるみたいです。
今回はテーブルのインポートのみを紹介しました。実際にTreasureDataにあるデータにアクセスするさいはHiveやPigといったSQLライクな(でも結構違う)クエリを書いて投げる必要があります。僕が使っているのはHiveQLですがそれについてもまた書きたいと思っています。