使用Pig计算两列之间的平均值

时间:2015-09-29 16:09:10

标签: hadoop mapreduce apache-pig

我的文件有三列代表日期和最低/最高温度值。

01012010    4.5    15.9

我需要计算每天的平均值。 这似乎很容易用UDF做,但我想知道如果没有它可以做到这一点。

我设法达到了这样的目的(连接温度然后压扁它们)但是对我来说这似乎太复杂了:

table          = LOAD 'e7/temp.csv' USING PigStorage('\t') as (day:chararray, min:float, max:float);
day_group      = FOREACH table GENERATE day, FLATTEN(TOKENIZE( CONCAT(CONCAT( (chararray)min, ','), (chararray)max) )) as minMax;
day_group_cast = FOREACH day_group GENERATE day, (float) minMax as minMax;
day_mean_group = GROUP day_group_cast BY day;
day_mean       = FOREACH day_mean_group GENERATE group as day, AVG(day_group_cast.minMax) as minMax;

1 个答案:

答案 0 :(得分:1)

根据@Enrichman的评论,下面的代码片段足以实现目标。

temp_data =  LOAD 'temp.csv' USING PigStorage(',') AS (day:chararray, min:float, max:float);
req_stats = FOREACH temp_data GENERATE day, (min+max)/2 AS avg_temp;