Amazon AthenaでCloudFrontのログにクエリを投げたメモ
AWS re:Invent 2016 で発表された新サービス Amazon Athenaを早速(?)使ってみました。
S3にログを置いたままサーバレスでクエリが発行できるので集計等が捗ります。
すでに同様の記事も見かけましたが、デリミタの指定でうまくいかずにハマったのでメモ。
なお、CloudFrontのLogging設定はこの記事では触れません。
Databaseの作成
CREATE DATABASE CloudFrontLogs;
Tableの作成
CREATE DATABASE CloudFrontLogs;
マネージメントコンソール上でも定義できますが、
DDL書くほうが楽な気がしたので、2つくらいカラム定義したあたりでそっとキャンセルしました。
CREATE EXTERNAL TABLE IF NOT EXISTS <TableName> (
date DATE,
time STRING,
xEdgeLocation STRING,
scBytes INT,
cIp STRING,
csMethod STRING,
csHost STRING,
csUriStem STRING,
scStatus INT,
csReferer STRING,
csUserAgent STRING,
csUriQuery STRING,
csCookie STRING,
xEdgeResultType STRING,
xEdgeRequestId STRING,
xHostHeader STRING,
csProtocol STRING,
csBytes INT,
timeTaken INT,
xForwardedFor STRING,
sslProtocol STRING,
sslCipher STRING,
xEdgeResponseResultType STRING,
csProtocolVersion STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = "\t",
'field.delim' = "\t"
) LOCATION 's3://<LogBacketName>/<LogPrefix>/'
;
CloudFrontのログフォーマットはTSVです。
serialization.format
とfield.delim
を' ' --タブ文字
みたいに表記している記事がいくつかありましたが、ドキュメントを見たら普通に"\t"
でよいと書いてありました。
カラム名はお好みに合わせてよしなに変更してください。
Queryの発行
SELECT * FROM <TableName> limit 10;
SELECT * FROM <TableName> limit 10;
期待通りResultsが返ってくればOK。
Author And Source
この問題について(Amazon AthenaでCloudFrontのログにクエリを投げたメモ), 我々は、より多くの情報をここで見つけました https://qiita.com/tsukapah/items/bbc750d7f2c92b29fe29著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .