SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

 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;

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

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

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
チュートリアル3:Hiveを使ってアクセスログを解析する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
「Cloudera Quick Start VM」を活用したビッグデータ分析の学習環境構築連載記事一覧

もっと読む

この記事の著者

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8652 2015/06/05 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング