Pig のグループ化の問題に対する解決策を見つけようとしています。現在、次のようなデータセットがあります。
Group | Height | Weight
A | 96.5 | 110.2
B | 88.2 | 122.5
A | 94.1 | 100.8
B | 84.1 | 115.6
DataFu ライブラリの StreamingQuantile メソッドを使用して、高さ変数の変位値 (25、50... エッチング) を計算しています。現在は機能していますが、各グループとその分位数の AVG 重みも計算する必要があります。したがって、次のようになります。
A | Quantile1 | 88.5 (height) | 134.4 (avg weight)
A | Quantile2 | 125.3 (height) | 156.2 (avg weight)
etc.....
B | Quantile4 | 144.3 (height) | 134.2 (avg weight)
参考までに、分位数を計算するための単純な Pig を次に示します。
REGISTER /usr/lib/datafu-1.2.0.jar;
define Quantile datafu.pig.stats.StreamingQuantile('0.0','0.25','0.5','0.75','1.0');
A = load 'mydata';
Group_A = GROUP A BY $0;
Quant = FOREACH GROUP_A GENERATE group,Quantile(A.$1);
とにかく、各分位点とグループの平均 $2 を計算することもできますか?