我有以下澄清在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
1条答案
按热度按时间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