Apache pig 如何将1x1别名转换为标量?

Apache pig 如何将1x1别名转换为标量?,apache-pig,Apache Pig,我想将计数转换为概率: total = foreach (group A all) generate SUM(A.count); A = foreach A generate A.count / total as probability; 这不起作用,因为total是别名,而不是标量: 无效的标量投影:总计:需要从中投影列 将其用作标量的关系 即使别名total只有一个字段(总和),您仍然必须引用该字段 这应该起作用: total = foreach (group A all) generat

我想将计数转换为概率:

total = foreach (group A all) generate SUM(A.count);
A = foreach A generate A.count / total as probability;
这不起作用,因为
total
是别名,而不是标量:

无效的标量投影:总计:需要从中投影列 将其用作标量的关系


即使别名
total
只有一个字段(总和),您仍然必须引用该字段

这应该起作用:

total = foreach (group A all) generate SUM(A.count) as total;
A = foreach A generate A.count / total.total as probability;
试试这个

total = foreach (group A all) generate SUM(A.count) as total_sum;
A = foreach A generate count / (int)total.total_sum as probability;
这里
搜索“将关系转换为标量”

在不将total.total转换为int/long的情况下是否有效?@Ruslan我很肯定它会的。
SUM
的输出应默认为long,这样您就不必按total:long执行
SUM(a.count)。好的。顺便说一句,强制转换的语法在Pig中无论如何都不起作用: