Adways Advent Calendar 9日目の記事です。
http://blog.engineer.adways.net/entry/advent_calendar/archive
こんにちは、データ分析エンジニアの石丸です。
最近、分析業務に取り組んでいるので、エンジニアのPrefixに「データ分析」と付けてみました。
さて、前回MHAの記事を書いてからいつの間にか3年過ぎてしまいましたが、
今回は、「Redshiftとビッグデータ分析」について書きたいと思います。
ビッグデータとは?
一般的には、「大量のデータ」という意味合いで使っていることが多いでしょう。
(「大量」の定義も人それぞれでしょうが、とりあえず今回は触れません)
Redshiftとは?
Amazonのデータウェアハウス(DWH)
データウェアハウスとは?
情報分析と意思決定を行うための大規模データベース
Redshiftの特徴
- 価格が安い
- カラムナーデータベース(列指向)
- 大規模データの集計処理が速い
- 豊富な圧縮エンコード
- 基本的なクエリ(DML)がMySQL等とほぼ同じなので簡単
- MySQL等のようなミリ秒単位でのレスポンスは不可能
Redshiftの雑感
私のチームでは、Redshiftを2013年6月頃から利用を開始し、
現在では数TB程度のデータを扱っています。
レコード数でいうと、数百億レコードを超えるテーブルも出てきました。
では、どれぐらいのレコード数であれば高速に集計できるのか。
対象Rowが10億レコード程度ぐらいまでなら、特にそれ程意識しなくても
高速(1分かからない程度)に集計できます。
また、100億レコードを超えてくると、Sort KeyやDist Keyを真面目に考えないと
処理が厳しくなる印象です。
Redshiftの処理速度
せっかくの機会なので、少しクエリを叩いてみました。
項目 | 値 |
---|---|
環境 | ds2.xlarge 1 node |
対象テーブルのレコード数 | 約57億レコード |
Sort Key | date |
select count(*) from hoge_table; → 31sec select hoge_col, count(*) from hoge_table group by hoge_col; → 4min 45sec select hoge_col, count(*) from hoge_table where date >= '2016-12-01' group by hoge_col; → 5sec
50億レコードぐらいになると、Sort Keyでの絞り込みがないとかなり時間がかかってしまいますが、
MySQLなどでは、ほぼ確実に応答が返ってこないボリュームなので、Redshiftは凄いですね。
しかも簡単で安い!
ビッグデータ分析の仕事
ビッグデータの分析ってどんな仕事をするんだろう?
何か難しそう?
なんて思うかもしれませんが、基本的には、以下の手順で分析するので、
Excelで行うような処理と同じようなものです。
- データクレンジング
- ノイズ(ゴミ)データの削除
- 名寄せなどデータを取り出し易い形式に加工
- 単純集計
- クロス集計
- 各単相関分析
- 高度な統計的な分析(多変量や機械学習等)
少し難しいことも書いていますが、データ分析の仕事は、
概ね上記の手順3ぐらいまででなんとかなり、ビジネス側に活かせるように、
システムでロジックを組んだり、グラフなどで可視化したりする業務が多いです。
やや難易度の高い分析業務については長くなりそうなので、また次回ということで。
次は湯浅さんの記事です!