SHOEISHA iD

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

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

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

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

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

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

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

 ここまでは、一般的なRDBMSでもできることしか行っていませんでした。このチュートリアルでは、Hadoopの強力な機能の一つ「非構造化データの処理」を行います。

 このチュートリアルの仮想企業では、Webサイトのアクセスログを保存しています。このアクセスログを解析することで、売上データとは違う角度から分析していきます。

 まず、アクセスログをHadoopにロードします。

$ sudo -u hdfs hdfs dfs -mkdir /user/hive/warehouse/original_access_logs
$ sudo -u hdfs hdfs dfs -copyFromLocal /opt/examples/log_files/access.log.2 /user/hive/warehouse/original_access_logs

 実際にロードされたかどうかを確認します。

$ hdfs dfs -ls /user/hive/warehouse/original_access_logs

 次に、Hiveにアクセスします。

$ beeline -u jdbc:hive2://localhost:10000 -n cloudera -p cloudera -d org.apache.hive.jdbc.HiveDriver

 SerDe(サーディー)というHiveの機能を使い、アクセスログをCSV形式などに変更することなく、そのままHiveテーブルとして読み込めるようにします。

CREATE EXTERNAL TABLE intermediate_access_logs (
ip STRING,
date STRING,
method STRING,
url STRING,
http_version STRING,
code1 STRING,
code2 STRING,
dash STRING,
user_agent STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "([^ ]*) - - \\[([^\\]]*)\\] \"([^\ ]*) ([^\ ]*) ([^\ ]*)\" (\\d*) (\\d*) \"([^\"]*)\" \"([^\"]*)\"",
"output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s"
)
LOCATION '/user/hive/warehouse/original_access_logs';

CREATE EXTERNAL TABLE tokenized_access_logs (
ip STRING,
date STRING,
method STRING,
url STRING,
http_version STRING,
code1 STRING,
code2 STRING,
dash STRING,
user_agent STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/user/hive/warehouse/tokenized_access_logs';

ADD JAR /usr/lib/hive/lib/hive-contrib.jar;

INSERT OVERWRITE TABLE tokenized_access_logs SELECT * FROM intermediate_access_logs;

exit;

 SerDeの詳細は『プログラミングHive』を参照してください。

 作成が終わったら、Hue Impalaクエリエディタに戻り、下記コマンドを実行して各ページのアクセスカウントを集計します。

invalidate metadata;

select count(*),url from tokenized_access_logs
where url like '%\/product\/%'
group by url order by count(*) desc;

 なお、この集計はImpalaと同じように、HueからHiveエディタを使用して実行することもできます。興味のある方は試してみてください。

 いかがでしたか? 次回は、Apache Sparkを使ってバスケット分析を行います。お楽しみに!

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング