在 Apache Pig (Hadoop) 中使用 MAX 时出错

数据挖掘 apache-hadoop 阿帕奇猪
2022-02-18 09:00:08

我正在尝试计算 Pig 中关系中不同组的最大值。该关系包含三列 patientid、featureid 和 featurevalue(都是 int)。我根据 featureid 对关系进行分组,并想计算每个组的最大特征值,代码如下:

grpd = GROUP features BY featureid;
DUMP grpd;
temp = FOREACH grpd GENERATE $0 as featureid, MAX($1.featurevalue) as val;

它给了我 无效的标量投影:grpd异常。我在不同的论坛上读到 MAX 为此类功能采用“袋子”格式,但是当我转储 grpd 时,它向我显示了袋子格式。以下是转储输出的一小部分:

(5662,{(22579,5662,1)})
(5663,{(28331,5663,1),(2624,5663,1)})
(5664,{(27591,5664,1)})
(5665,{(30217,5665,1),(31526,5665,1)})
(5666,{(27783,5666,1),(30983,5666,1),(32424,5666,1),(28064,5666,1),(28932,5666,1)})
(5667,{(31257,5667,1),(27281,5667,1)})
(5669,{(31041,5669,1)})

什么问题?

1个回答

问题在于列寻址,这是正确的工作代码:

grpd = GROUP features BY featureid;
temp = FOREACH grpd GENERATE group as featureid, MAX(features.featurevalue) as val;