OLAP関数
テレコム業界のCDR(Call Detail Record)の解析をOracleからHiveにマイグレーションした資料を見つけたのでめもっておく。
Hadoop World 2011: Replacing RDB/DW with Hadoop and Hive for Telco Big Data - Jason Han, NexR
View more presentations from Cloudera, Inc.
この資料を見つけたきっかけはp22にあるOracleのrank() over (partition by ... order by ...)みたいなOLAP関数をHiveでどのように書き変えるかの部分を見たからだ。
そもそもオレはDB弱者でOLAP関数なぞ使った事も無いし知らなかったのだがWeb+DBのミックさんの連載を読んで便利というか直感的だなあと思ったものだ。
MySQLにはOLAP関数が無いらしいので同じ事を実現しようとすると相関サブクエリになったりして可読性はあんま良くないと思う。
具体例はこの辺。
- 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (3)OLAP専用関数:SQLアタマアカデミー|gihyo.jp … 技術評論社
- MySQLで分析関数を模倣1(前編) (1/4):CodeZine(コードジン)
Hiveで処理する場合はOracleと違ってまだOLAP関数がないのでうごうごとやらないといけない。
ただHiveも0.7になってRank関数は実装されたようだ。
[HIVE-1304] add row_sequence UDF - ASF JIRA
しかしここで指摘されているようにアンドキュメントなようだw
この辺の集計処理をHiveでやるのかそれとも例えばSqoopでPostgreSQLにデータを取り込んでRDBMSに任せるのかとかいろいろとやり方はありそうだ。