我是 pig 的初学者,我已经开始使用字数统计程序。

在下面的单词计数程序中,我看到在第3行和第4行中使用了group关键字。关键字'group'在两个地方的用法是否相同或不同,因为在Caps中给出程序的第4行中的group会引发错误,所以我有点困惑吗?

lines = LOAD '/user/root/pig/pig_demo.txt' AS (line:chararray);
words = FOREACH lines GENERATE FLATTEN(TOKENIZE(line)) as word;
grouped = GROUP words BY word;
wordcount = FOREACH grouped GENERATE group, COUNT(words);
DUMP wordcount;

最佳答案

它们两者都是不同的。前者,即“GROUP”是一个运算符,而后者,即,“group”,是引用GROUP键的关键字。

以下是here的解释。

GROUP运算符将具有相同组键(键字段)的元组分组在一起。如果组密钥具有多个字段,则密钥字段将是一个元组,否则它将与组密钥的类型相同。 GROUP操作的结果是一个关系,其中每个组包含一个元组。该元组包含两个字段:

第一个字段名为“group”(请勿将其与GROUP运算符混淆),并且与组密钥相同。
第二个字段采用原始关系的名称,类型为bag。
这两个字段的名称都是由系统生成的,如下例所示。
请注意,GROUP(以及COGROUP)和JOIN运算符执行类似的功能。 GROUP创建一组嵌套的输出元组,而JOIN创建一组平面的输出元组。

关于hadoop - 组关键字在Apache Pig字数统计程序中的意义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48450075/

10-16 03:00