0
我需要對我的表的每一列執行一些數字操作(使用UDF)。對於每一列我都得到2個值(mean和standard-dev)。但最終的結果是(mean_1, sd_1, mean_2, sd_2, mean_3, sd_3...)
,其中1,2...
是列索引。但是我需要在單獨一行中的每個列的輸出。像:將豬的每個列操作的結果存儲在豬的單獨行中
mean_1, sd_1 \\for col1
mean_2, sd_2 \\for col2
...
這裏是豬腳本我使用:
data = LOAD 'input_file.csv' USING PigStorage(',') AS (C0,C1,C2);
grouped_data = GROUP data ALL;
res = FOREACH grouped_data GENERATE FLATTEN(data), AVG(data.$1) as mean, COUNT(data.$1) as count;
tmp = FOREACH res {
diff = (C1-mean)*(C1-mean);
GENERATE *,diff as diff;
};
grouped_diff = GROUP tmp all;
sq_tmp = FOREACH grouped_diff GENERATE flatten(tmp), SUM(tmp.diff) as sq_sum;
stat_tmp = FOREACH sq_tmp GENERATE mean as mean, sq_sum/count as variance, SQRT(sq_sum/count) as sd;
stats = LIMIT stat_tmp 1;
有誰請指導我如何實現這一目標?
因此,您只想使用結果數據的一行? – LiMuBei
你可以粘貼你的豬腳本嗎? –
@李慕貝:是的,只有一行包含結果......我還包括豬腳 –