Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

フリーのビッグデータ分析学習環境を使って、構造化データと非構造化データの分析を試してみる

「Cloudera Quick Start VM」を活用したビッグデータ分析の学習環境構築 第2回

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2015/06/05 14:00

 前回の記事では、MySQLからHadoopにマスターデータの投入を行い、Hiveテーブルを作成するところまで行いました。今回は分析にもよく利用されるSQLを使用して、データの分析などを行います。

目次

 Apache Hiveは、SQLに似た言語(HiveQL)を使用して、データの抽出や変換などを行うことができます。しかし、Hiveは処理にMapReduceを使用しており、大規模データのバッチでの処理や、チュートリアル3(後述)のような柔軟な処理には適していますが、一般的に処理に時間がかるため、繰り返し分析を行うような用途に利用するのは難しいでしょう。

 Cloudera Impalaは、大規模データのための高速なSQLエンジンです。残念ながらこのチュートリアルではその本来の力を発揮することができませんが、数十TBもの大量データに対するクエリでも、今回と同じ操作で同じように分析を行うことができることは覚えておいてください。

 Impalaについての詳細は、以下のスライドを参考にしてください。

チュートリアル2:Impalaを使って高速にデータを分析する

 まず、前回設定した仮想マシンを起動します。続いて「http://<VMのIPアドレス>:8888/impala/」にアクセスし、HueのImpalaクエリエディタを開きます。

 ImpalaとHiveとはスキーマを共有しています。Impalaはスキーマをキャッシュしているので、Hiveからスキーマを変更した場合、INVALIDATE METADATAを実行してImpalaにスキーマ変更を通知しなければいけません。以下のコマンドを実行してください。

INVALIDATE METADATA;

 なお、クエリの入力時にCTRL+スペースキーを押すことで、キーワードの自動補完を行うことができます。

自動補完の図
自動補完の図

最も売上の多い商品カテゴリ

 まずは、一般的なRDBMSで行うことのできる分析クエリを試してみます。以下のクエリを実行し、注文データから「最も売上の多い商品カテゴリ」を算出してみます。

-- Most popular product categories
select c.category_name, count(order_item_quantity) as count
from order_items oi
inner join products p on oi.order_item_product_id = p.product_id
inner join categories c on c.category_id = p.product_category_id
group by c.category_name
order by count desc
limit 10;

 結果が出力されたら、「チャート」タブをクリックしてみましょう。結果をグラフ表示することができます。

most popular product categoryのグラフ
most popular product categoryのグラフ

 次は、売上トップ10の商品を計算するクエリを実行します。

-- top 10 revenue generating products
select p.product_id, p.product_name, r.revenue
from products p inner join
(select oi.order_item_product_id, sum(cast(oi.order_item_subtotal as float)) as revenue
from order_items oi inner join orders o
on oi.order_item_order_id = o.order_id
where o.order_status <> 'CANCELED'
and o.order_status <> 'SUSPECTED_FRAUD'
group by order_item_product_id) r
on p.product_id = r.order_item_product_id
order by r.revenue desc
limit 10;

 実行したクエリの履歴は保存されているので、後からクエリを呼び出して再実行することができます。

クエリの履歴の図
クエリの履歴の図

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 嶋内 翔(Cloudera株式会社)(シマウチ ショウ)

    2011年、Clouderaの最初の日本人社員として入社。サポートエンジニアとして3年務めた後、セールスエンジニアとして働いている。監訳書に「Apache Sqoop クックブック」。ライフワークで技術系ポッドキャスティング garsue.fm のファシリテーターを務めている。

バックナンバー

連載:「Cloudera Quick Start VM」を活用したビッグデータ分析の学習環境構築
All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5