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 を勉強しろと言うことか・・・。