Apache Pig Latin で定数サンプリング
みんなだいすきPig Latinだよ!
Apache Pig Latinの公式
ここには以下のようなサンプルが置いてある。
a = load 'a.txt'; b = group a all; c = foreach b generate COUNT(a) as num_rows; e = sample a 1000/c.num_rows;
バージョンの問題なのか、自分の環境では、1000/c.num_rows
が0になるようだ。
解決策
これはJavaでありがちな問題だ。(int)/(int) = (int)
となり、切り捨てられるやつな。
a = load 'a.txt'; b = group a all; c = foreach b generate COUNT(a) as num_rows; e = sample a 1000.0/c.num_rows;
1000
を1000.0
として、double
型にすればいい。
Apache Pig Latinの公式、もうちょっと頑張ってくれ~