13
LTSV Pig で処理する話 2013-03-04 LT at 2回初心者向け分散処理勉強会 @miyakawa_taku

Processing LTSV by Apache Pig

Embed Size (px)

DESCRIPTION

LTSV is a nice format for log files. I wrote an Pig plugin to load LTSV files.

Citation preview

Page 1: Processing LTSV by Apache Pig

LTSV を Pig で処理する話

2013-03-04

LT at 第2回初心者向け分散処理勉強会

@miyakawa_taku

Page 2: Processing LTSV by Apache Pig

要旨

• Apache Pig で LTSV ファイルを読み込むプラグインを作りました

• Hadoop 上で LTSV ファイルが簡単に扱えるようになるから素敵です

1

Page 3: Processing LTSV by Apache Pig

Pig

2

Page 4: Processing LTSV by Apache Pig

Pig

• データフローを記述して Hadoop の

MapReduce ジョブをぶっ放すツールです

• Pig でデータを前処理して Hive のテーブルに突っ込んだりします

• 分散 awk みたいな感覚です

3

Page 5: Processing LTSV by Apache Pig

Pig の例: 部署ごと平均給与の計算

4

-- ロード

emp = LOAD 'emp.txt' AS (name, dept, salary);

-- 計算

emp_by_dept = GROUP emp BY dept;

avgsalary_by_dept = FOREACH emp_by_dept

GENERATE group AS dept, AVG(emp.salary)

-- 保存

STORE avgsalary_by_dept INTO 'avgsalary_by_dept';

山田 生産 190

田中 営業 320

中橋 生産 240

営業 235

人事 252

生産 220 Pig

Page 6: Processing LTSV by Apache Pig

LTSV

5

Page 7: Processing LTSV by Apache Pig

LTSV: Labeled Tab-separated Values

• 2月8日に突如流行 → 数日で収束しました

• ログ用のファイルフォーマットです

• タブ区切りの各列を「<ラベル>:<値>」にします

6

host:host1.example.org req:GET /index.html ua:Opera/9.80

host:host1.example.org req:GET /favicon.ico ua:Opera/9.80

host:pc.example.com req:GET /news.html ua:Mozilla/5.0

いいところ

• 書式が一目瞭然

• awk でパースできる: FS="¥t", split($i,p,":")

• Apache や nginx で出力設定が簡単

• 仕様変更で値を追加しても大丈夫

注意点 • タブや改行を含む値は出力できない

Page 8: Processing LTSV by Apache Pig

LTSV / Pig

7

Page 9: Processing LTSV by Apache Pig

Pig で LTSV が読めるようにする

• 出したログに Hive でクエリを投げたい

⇒ Pig で前処理したい

⇒ Pig で LTSV を読むプラグインを作りました

8

Page 10: Processing LTSV by Apache Pig

Pig で LTSV を読むプラグイン

9

-- ロード

access = LOAD 'access.log'

USING org.ltsv.pig.LTSVLoader('host, ua');

-- ホスト, UA ごとのアクセス数を計算

access_by_host_ua = GROUP access BY (host, ua);

count_by_host_ua = FOREACH access_by_host_ua

GENERATE group.host, group.ua, COUNT(access);

-- 出力

DUMP count_by_host_ua;

必要な値の

ラベルを指定

Page 11: Processing LTSV by Apache Pig

〆め

10

Page 12: Processing LTSV by Apache Pig

結論

• Pig を使うと Hadoop での並列データ処理が簡単に書けます

• LTSV は人間にも機械にもやさしいログフォーマットです

• Pig で LTSV が読めるのでログを LTSV でバカスカ出して Hadoop に突っ込んでおけば幸せになれます

11