在 Apache Pig (Hadoop) 中使用 MAX 时出错
Error when using MAX in Apache Pig (Hadoop)
我正在尝试计算 Pig 关系中不同组的最大值。该关系具有三列 patientid、featureid 和 featurevalue(均为 int)。
我根据 featureid 对关系进行分组,并想计算每组的最大特征值,代码如下:
grpd = GROUP features BY featureid;
DUMP grpd;
temp = FOREACH grpd GENERATE [=10=] as featureid, MAX(.featurevalue) as val;
它给我 无效的标量投影:grpd 异常。我在不同的论坛上读到 MAX 为此类功能采用 "bag" 格式,但是当我获取 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)})
有什么问题吗?
问题出在列寻址上,这是正确的工作代码:
grpd = GROUP features BY featureid;
temp = FOREACH grpd GENERATE group as featureid, MAX(features.featurevalue) as val;
我正在尝试计算 Pig 关系中不同组的最大值。该关系具有三列 patientid、featureid 和 featurevalue(均为 int)。 我根据 featureid 对关系进行分组,并想计算每组的最大特征值,代码如下:
grpd = GROUP features BY featureid;
DUMP grpd;
temp = FOREACH grpd GENERATE [=10=] as featureid, MAX(.featurevalue) as val;
它给我 无效的标量投影:grpd 异常。我在不同的论坛上读到 MAX 为此类功能采用 "bag" 格式,但是当我获取 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)})
有什么问题吗?
问题出在列寻址上,这是正确的工作代码:
grpd = GROUP features BY featureid;
temp = FOREACH grpd GENERATE group as featureid, MAX(features.featurevalue) as val;