pig为每个澄清嵌套

k5hmc34c  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(409)

我有以下澄清在Pig的顺序运算符。谁能澄清一下吗。
样本代码

x = LOAD '/home/hadoop/Desktop/HadoopSetup/input/Data/StockData' using PigStorage(',') As (exchange:chararray, symbol:chararray, date:chararray, open:double, high:double, low:double, close:double, volume:long, adj_close:double);

y = GROUP x by symbol;

z = foreach y {
            t = order x by open DESC;
            k = limit t 1;
            generate group, k.volume;
                };

问题
y关系在其模式中包含组x。x不是关系,既然x不是关系,我们怎么能在下面的顺序语句中选择它呢。有人能详细说明一下下面的陈述吗?

t = order x by open DESC
gcuhipw9

gcuhipw91#

apachepig在使用嵌套foreach语句时使用字段投影的概念,在您的代码中它使用的是嵌套投影
因此,当您使用foreach时,这意味着对于y中存在的每个记录(y中存在的每个记录都被分组为x),现在apache pig不需要将分组的x放在单独的关系中,他可以从已经投影的字段(即y)引用它。
注意这里的一点,foreach操作将对y中的每个记录/行执行。
项目范围可用于允许星号表达式(*)的所有情况。
项目范围可以在以下语句中使用:foreach、join、group、cogroup和order by(也可以在
嵌套的foreach块)。
点击此链接:https://pig.apache.org/docs/r0.14.0/basic.html

相关问题