Pig の SUBSTRING でハマる

Pocket

Hadoop を業務上使う必要があるんだけど、その中でハマったこと。
Hive とかあるけど、業務で使っているのは Pig の 0.8.1。

その中で SUBSTRING でハマった。
いつも PHP を使っていたためか、SUBSTRINGは
SUBSTRING(str,start index, length) というイメージでいた。
ただ、Pig は Java と同じく、 SUBSTRING(str,start index, end index)。

$ cat hoge.txt
[08/Jun/2012:04:00:03

$pig
grunt> copyFromLocal hoge.txt hoge.txt
grunt> r = LOAD 'hoge.txt';
grunt> a = FOREACH r GENERATE $0, SUBSTRING($0,1,3) AS Day, SUBSTRING($0,4,7) AS MonthString;
grunt> DUMP a;
([08/Jun/2012:04:00:03,08,Jun)

個人的には 08を取得する場合は SUBSTRING($0,1,2)、Jun を取得する場合 SUBSTRING($0,4,6) 何だけどなぁ・・・。
Pig 使うにしろ Java を勉強しろと言うことか・・・。

コメントを残す