こんにちは!中の人です。
今回も前回のレシピに引き続き、Amazon Redshift編です!
前回は『Amazon Redshift編~データをインポートしてみよう!(エラー編)~』ということで、データインポートの際のエラーについてお話したかと思います。
今回のレシピでは『Amazon Redshift編~S3ホスティングからログを取り込んでみよう!~』と題して、S3の便利な「Webホスティング」機能を使って、溜めたログをRedshiftに取り込む方法について説明いたします。
なお、今回お話するものはビッグデータ入門として、簡単に始めることが出来る構成となっています。
それでは実際に、作業をおこなっていきましょう!
事前準備
1. まず、以前のレシピ『Amazon Route53編~サイトを公開してみよう!パート②~』を参照してS3 Webホスティングの設定を行います。
2. 手順3のログに関する設定の部分で「Enable」の項目にチェックをし、ターゲットのバケット名を指定して下さい。
3. 続けて、手順4も参照していただいて設定をおこないます。
※手順5以降は省略して問題ありません。
4. サイトに何度かアクセスを行い、指定バケットにログが溜まっていることを確認して下さい。
Management Console上で以下のようになっていると成功です!
テーブルの作成
ここからはRedshiftに対する操作です。
5. SQL Workbenchを起動させ、Redshiftに対して接続します。
6. アクセスログ 保存用にテーブルを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
create table access_log ( BucketOwner varchar(200), Bucket varchar(200), TimeS01 varchar(200), TimeS02 varchar(200), RemoteIP varchar(200), Requester varchar(200), RequestID varchar(200), Operation varchar(200), KeyID varchar(200), RequestURI varchar(2000), HTTPstatus varchar(200), ErrorCode varchar(200), BytesSent varchar(200), ObjectSize varchar(200), TotalTime varchar(200), TurnAroundTime varchar(200), Referrer varchar(200), UserAgent varchar(200), VersionId varchar(200) ); |
※ サンプルのため、サイズは大きめに作っております。
※ 正しいログフォーマットは以下で確認することができます。
データのインポート
7. 次に実際に、データのインポートをおこなってみます。
1 |
copy access_log from 's3:// [s3-backet名]/' delimiter ' ' REMOVEQUOTES ' CREDENTIALS aws_access_key_id=[your access key];aws_secret_access_key=[your secret access key]'; |
○ポイント
・S3からデータをインポートする時と同じ方法でインポートすることが出来る
・ログフォーマットに合わせたdemiliter/quoteを設定をすることで、正しく取り込むことが出来る
データの確認
8. データの確認として以下を実行してみます。
1 |
select count(remoteip) as count,remoteip from access_log group by remoteip order by remoteip desc; |
該当のアクセスログのIPが44個あり、各IPの接続回数が確認できます。
いかがでしたでしょうか?
このようにAWSのサービスと組み合わせることで、簡単にRedshiftを使ってみることが出来ます。
次回は『Amazon Redshift編~プログラムからRedshiftを操作しよう!(ODBC接続)~』と題して、PHPを利用してRedshiftにODBC接続して操作する方法を紹介していきたいと思いますので、お楽しみに!